Een experiment / idee
Heeej,
Ik had gister een idee om (ik denk) snel websites te kunnen maken. Hier is de download link : download
De index.php ziet er als volgt uit:
Je kan natuurlijk het menu enzovoorts opslaan in een appart bestand die je dan bij de volgende pagina bijvoorbeeld cats.php alleen hoef te includen. Het uiteindelijke doel van het systeem is zodat je dingen kan hergebruiken
hier is een download link voor alle bestanden: download
Mij vraag is wat jullie er van vinden
Ik had gister een idee om (ik denk) snel websites te kunnen maken. Hier is de download link : download
De index.php ziet er als volgt uit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
include_once("lib/Website.class.php");
include_once("lib/Position.class.php");
include_once("lib/Module.class.php");
include_once("lib/Database.class.php");
//MODULES
include_once("modules/Tekst.php");
include_once("modules/Menu.php");
include_once("modules/LoginForm.php");
//MAAK VERVINDING MET EEN DATABASE
Database::Connect("localhost","root","","social");
//START WEBSITE
$website = new Website('Dennis Sluijk - Home');
$website->addStylesheet('style/style.css');
$website->addJavascript('lib/javascript/jquery.js');
$website->addJavascript('lib/javascript/dynaload.js');
//MAKE MENU
$mainmenu = new Menu();
$home = new MenuItem('Home','index.php','');
$informatie = new MenuItem('Informatie','informatie.php','');
$informatiesub = new Menu();
$informatiesub->addMenuItem(new MenuItem('Honden','#',""));
$informatiesub->addMenuItem(new MenuItem('Katten','#',""));
$informatie->addMenu($informatiesub);
$mainmenu->addMenuItem($home);
$mainmenu->addMenuItem($informatie);
//MAKE LOGIN FORM
$loginform = new LoginForm();
$left = new Position('left');
$left->appendModule($mainmenu);
$left->appendModule($loginform);
$tekst = new Tekst('Test test TEKST TEKST IPSUM DINGEN');
$content = new Position('content');
$content->appendModule($tekst);
$main = new Position('main');
$main->appendPosition($left);
$main->appendPosition($content);
//APPEND POSITIONS
$website->appendPosition($main);
echo $website->fetch();
?>
include_once("lib/Website.class.php");
include_once("lib/Position.class.php");
include_once("lib/Module.class.php");
include_once("lib/Database.class.php");
//MODULES
include_once("modules/Tekst.php");
include_once("modules/Menu.php");
include_once("modules/LoginForm.php");
//MAAK VERVINDING MET EEN DATABASE
Database::Connect("localhost","root","","social");
//START WEBSITE
$website = new Website('Dennis Sluijk - Home');
$website->addStylesheet('style/style.css');
$website->addJavascript('lib/javascript/jquery.js');
$website->addJavascript('lib/javascript/dynaload.js');
//MAKE MENU
$mainmenu = new Menu();
$home = new MenuItem('Home','index.php','');
$informatie = new MenuItem('Informatie','informatie.php','');
$informatiesub = new Menu();
$informatiesub->addMenuItem(new MenuItem('Honden','#',""));
$informatiesub->addMenuItem(new MenuItem('Katten','#',""));
$informatie->addMenu($informatiesub);
$mainmenu->addMenuItem($home);
$mainmenu->addMenuItem($informatie);
//MAKE LOGIN FORM
$loginform = new LoginForm();
$left = new Position('left');
$left->appendModule($mainmenu);
$left->appendModule($loginform);
$tekst = new Tekst('Test test TEKST TEKST IPSUM DINGEN');
$content = new Position('content');
$content->appendModule($tekst);
$main = new Position('main');
$main->appendPosition($left);
$main->appendPosition($content);
//APPEND POSITIONS
$website->appendPosition($main);
echo $website->fetch();
?>
Je kan natuurlijk het menu enzovoorts opslaan in een appart bestand die je dan bij de volgende pagina bijvoorbeeld cats.php alleen hoef te includen. Het uiteindelijke doel van het systeem is zodat je dingen kan hergebruiken
hier is een download link voor alle bestanden: download
Mij vraag is wat jullie er van vinden
Gewijzigd op 23/08/2011 12:19:28 door Dennis Sluijk
heb je ergens een voorbeeld online staan?
Nee. Ik heb geen hostingplekje
Wat is hiervan het voordeel ten opzichte van views? (met een parser zoals smarty)
Jah zat er al aan te denken om een soort fileInclude functie te maken waar je dan gewoon een file kan opgeven. en dat je dan gewoon data kan meesturen
Gewijzigd op 23/08/2011 12:42:29 door Dennis Sluijk
Zegmaar smarty?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
class Template
{
public $vars;
public $file;
function __construct($file = null)
{
$this->file = $file;
}
function set($name,$value)
{
$this->vars[$name] = is_object($value) ? $value->fetch() : $value;
}
function fetch($file = null)
{
if(!$file) $file = $this->file;
if($this->vars) extract($this->vars);
ob_start();
include($file);
$content = ob_get_contents();
ob_end_clean();
return $content;
}
}
?>
class Template
{
public $vars;
public $file;
function __construct($file = null)
{
$this->file = $file;
}
function set($name,$value)
{
$this->vars[$name] = is_object($value) ? $value->fetch() : $value;
}
function fetch($file = null)
{
if(!$file) $file = $this->file;
if($this->vars) extract($this->vars);
ob_start();
include($file);
$content = ob_get_contents();
ob_end_clean();
return $content;
}
}
?>
Dit is het zelfde idee als smarty..
En wat word hier het voordeel van, bovenop smarty?
Nee, dit is geen smarty, omdat hier geen gebruik wordt gemaakt van een externe template.
Elke klasse vertegenwoordigt een HTML element..
OT: Het ziet er goed uit. Lijkt een beetje op de java.awt klassen bibliotheek.
Elke klasse vertegenwoordigt een HTML element..
OT: Het ziet er goed uit. Lijkt een beetje op de java.awt klassen bibliotheek.
Gewijzigd op 23/08/2011 15:09:44 door Fabian M
Als een functie zo begint:
function fetch($file = null)
neem ik aan dat er een extern bestand in word geladen.
function fetch($file = null)
neem ik aan dat er een extern bestand in word geladen.
Deze Template class is toch bijna het zelfde idee als Smarty ?? of heb ik dat nou fout??? Dit is een uitbreiding van de Template classe
hiermee kan je templates mee cachen
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
class CachedTemplate extends Template
{
public $expireTime;
public $cached_id;
public $cached;
public function __construct($cached_id = null, $expireTime = 600) {
$this->expireTime = $expireTime;
$this->cached_id = 'cache/' . md5($cached_id);
}
public function is_cached() {
if($this->cached) return true;
if(!$this->cached_id) return false;
if(!file_exists($this->cached_id)) return false;
if(!($fmtime = filemtime($this->cached_id))) return false;
if(($fmtime + $this->expireTime) < time()) {
@unlink($this->cache_id);
return false;
}
else {
$this->cached = true;
return true;
}
}
public function fetch_cache($file) {
if($this->is_cached()) {
$filehandle = fopen($this->cached_id, 'r');
$data = fread($filehandle, filesize($this->cached_id));
fclose($filehandle);
return $data;
}
else {
$data = parent::fetch($file);
$filehandle = fopen($this->cached_id, 'w');
fwrite($filehandle, $data);
fclose($filehandle);
return $data;
}
}
public function dump() {
if($this->is_cached()) {
@unlink($this->cache_id);
}
}
}
?>
class CachedTemplate extends Template
{
public $expireTime;
public $cached_id;
public $cached;
public function __construct($cached_id = null, $expireTime = 600) {
$this->expireTime = $expireTime;
$this->cached_id = 'cache/' . md5($cached_id);
}
public function is_cached() {
if($this->cached) return true;
if(!$this->cached_id) return false;
if(!file_exists($this->cached_id)) return false;
if(!($fmtime = filemtime($this->cached_id))) return false;
if(($fmtime + $this->expireTime) < time()) {
@unlink($this->cache_id);
return false;
}
else {
$this->cached = true;
return true;
}
}
public function fetch_cache($file) {
if($this->is_cached()) {
$filehandle = fopen($this->cached_id, 'r');
$data = fread($filehandle, filesize($this->cached_id));
fclose($filehandle);
return $data;
}
else {
$data = parent::fetch($file);
$filehandle = fopen($this->cached_id, 'w');
fwrite($filehandle, $data);
fclose($filehandle);
return $data;
}
}
public function dump() {
if($this->is_cached()) {
@unlink($this->cache_id);
}
}
}
?>
hiermee kan je templates mee cachen
Gewijzigd op 23/08/2011 20:40:17 door Dennis Sluijk
Wat heb je aan het cachen van een template als je dan geen variabelen meer kan gebruiken?
En wat is überhaupt het voordeel van het genereren van html (zeker als je DOM niet dynamisch is).
En wat is überhaupt het voordeel van het genereren van html (zeker als je DOM niet dynamisch is).
Die Template classe heeft niets met het bovenste te maken. Maar bijvoorbeeld als ik een pagina heb waar de content in de database staat maakt hij het er een hardcode html pagina van stel ik heb 1000 bezoekers op de pagina per dag dan hoef je niet elke keer een aanvraag naar de database doen.
PS. De bovenste 2 klassen Template en CachedTemplate zijn voorbeelden die ongeveer het zelfde doen als Smarty.
Toevoeging op 23/08/2011 20:41:11:
SLOTJE graag
PS. De bovenste 2 klassen Template en CachedTemplate zijn voorbeelden die ongeveer het zelfde doen als Smarty.
Toevoeging op 23/08/2011 20:41:11:
SLOTJE graag
Smarty en al op template gebaseerde websites zijn fun als je maar een klein aantal gebruikers hebt.
Hebben jullie ooit weleens de broncode die smarty genereert bekeken?
Als ik van zo`n soort cms de broncode weergeef is die over de 4000 regels!
Hebben jullie ooit weleens de broncode die smarty genereert bekeken?
Als ik van zo`n soort cms de broncode weergeef is die over de 4000 regels!
Kan iemand mij de beste manier van programmeren vertellen?
Smarty maakt de broncode precies zoals je zelf zegt dat ze moeten worden.
Jacco Brandt op 23/08/2011 22:40:47:
Smarty maakt de broncode precies zoals je zelf zegt dat ze moeten worden.
Jah ik vond ook al zo raar :S
Ik ben ook geen voorstander van Smarty. Het is zeker en vast mooi, maar vaak te uitgebreid. Ik ken genoeg programmeurs die het gebruiken die hun CSS, JavaScript, en zelfs hun HTML minifien. Maar ooh jee, als je hun verteld dat Smarty eigenlijk veel meer opslokt, terwijl ze slechts er 10% van gebruiken.
Dus een eigen template-parser vind ik in dat opzicht zeker een meerwaarde. Ik zou er dus zeker mee verder gaan. Maar overdrijf niet...
Waarom? Gewoon in een header.tpl standaard inzetten. Evt zou je bepaalde stukjes script kunnen uitschakelen door een IF-structuur in je template-parser te bouwen.
{$IF_JS}
laat wat script in
{/$IF_JS}
addIf('if_js', true);
Dus een eigen template-parser vind ik in dat opzicht zeker een meerwaarde. Ik zou er dus zeker mee verder gaan. Maar overdrijf niet...
Code (php)
1
2
3
2
3
$website->addStylesheet('style/style.css');
$website->addJavascript('lib/javascript/jquery.js');
$website->addJavascript('lib/javascript/dynaload.js');
$website->addJavascript('lib/javascript/jquery.js');
$website->addJavascript('lib/javascript/dynaload.js');
Waarom? Gewoon in een header.tpl standaard inzetten. Evt zou je bepaalde stukjes script kunnen uitschakelen door een IF-structuur in je template-parser te bouwen.
{$IF_JS}
laat wat script in
{/$IF_JS}
addIf('if_js', true);
Hmm, ik heb het nagekeken, en smarty zorgt inderdaad voor een extra hoeveelheid code. Ik zal deze parser dus toch eventjes gaan doorspreken met mijn collega.
Maar kan de extra waarde op de site wel echt kwaad, de hoofdzakelijke snelheid zit in dit geval toch in het 'downloaden' van de site, iets waarvoor het minifien toch nog wel nut heeft?
Maar kan de extra waarde op de site wel echt kwaad, de hoofdzakelijke snelheid zit in dit geval toch in het 'downloaden' van de site, iets waarvoor het minifien toch nog wel nut heeft?
Jacco Brandt op 24/08/2011 12:30:13:
Hmm, ik heb het nagekeken, en smarty zorgt inderdaad voor een extra hoeveelheid code. Ik zal deze parser dus toch eventjes gaan doorspreken met mijn collega.
Maar kan de extra waarde op de site wel echt kwaad, de hoofdzakelijke snelheid zit in dit geval toch in het 'downloaden' van de site, iets waarvoor het minifien toch nog wel nut heeft?
Maar kan de extra waarde op de site wel echt kwaad, de hoofdzakelijke snelheid zit in dit geval toch in het 'downloaden' van de site, iets waarvoor het minifien toch nog wel nut heeft?
Jah idd veel zal het niet uitmaken.
Ik vindt Smart van grote toegevoegde waarde als je werkt in een team met ontwikkelaars waarbij een duidelijke scheiding is tussen frontend en backend ontwikkelaars. Qua parsetijd scheelt minify'en e.d. zeker meer als Smarty. Smarty verbruikt ongeveer 0.3s van je pagina. Veel sites kunnen hele seconden besparen door plaatjes te comprimeren, javascript, HTML, etc.
Maargoed in combinatie met ZendFramework vindt ik Smarty minder een succes.
Maargoed in combinatie met ZendFramework vindt ik Smarty minder een succes.




