Jeg har en side som benytter et meget simpelt "template-system". Denne benytter jeg af den simple årsag at jeg har omkring 20 undersider, og jeg ikke ønsker at skal skrive doctype, metakode, links til css filer, js. med mere på hver top.
Mit problem er så nu, min "header" indeholder omkring 20 forskellige javascript filer.. og der er max 2-3 filer der har relevans for hver underside, således er det spild af loade dem alle.
Men hvordan kan jeg styre det? altså eksempelvis skrive $page->load_js("/js/fil.js");
Jeg er ikke god til OOP og jeg er kun nybegynder til PHP :)
Håber der er nogen der har nogle forslag, det ville varme meget :)))
class Page {
private $pagename;
public function __construct($pagename = null) { $this->setPageName($pagename); }
public function setPageName($pagename) {
if(is_string($pagename) AND strlen($pagename)>1) { $this->pagename = $pagename; return true;
En mulighed var at have en base class med en abstrakt metode (eller en metode som ikke gør noget, hvis PHP ikke har abstrakte metoder - jeg er ikke super PHP kyndig) og så subclasse den base class med en metode med de relevante JS filer og bruge sublclassen på dine sider.
Her er et super simpelt eksempel (som ikke gør noget brugbart, men kun illusterer teknikken).
common.php ----------
<?php abstract class AnyPage { private $title; public function __construct($title) { $this->$title = $title; } public function write_header() { echo "Some non-JS stuff<br>"; $this->write_js(); } public function write_trailer() { echo "Bla bla<br>"; } protected abstract function write_js(); } ?>
page1.php ---------
<?php require 'common.php'; class Page1 extends AnyPage { protected function write_js() { echo "This is JS for page 1<br>"; } } $page = new Page1("This is page 1"); $page->write_header(); ?> <?php $page->write_trailer(); ?>
<?php require 'common.php'; class Page1 extends AnyPage { protected function write_js() { echo "This is JS for page 2<br>"; } } $page = new Page1("This is page 2"); $page->write_header(); ?> Some other text<br> <?php $page->write_trailer(); ?>
Puha. Jeg er stadig ikke sikker på at jeg forstår teknikken, kan man ikke bare skrive noget simpelt som $page-load_js("/sti/fil.js"); - og så kommer der automatisk ind i min header?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.