gebruik het zend framework welke in zich heel veel gebruikt maakt van patterns oa singeltons, factory's,chain of command, mvc.quote:Op dinsdag 24 maart 2009 19:24 schreef Scorpie het volgende:
Welk pattern gebruiken jullie om objecten aan te maken binnen jullie applicatie? Voor domain objecten lijkt mij een DomainObjectFactory class handig, die elke keer 1 instantie van een object retourneert?
Of gebruiken jullie een generieke oplossing voor al jullie objecten?
1 |
1 2 3 4 | $sql = "SELECT website, www_website, http_www_website, cat_1 FROM ww WHERE cat_1 LIKE'cat1%'"; $resultaat = mysql_query($sql); ?> |
1 2 3 | echo "<a target='blank' rel='nofollow' href='".$row["http_www_website"]."'>".$row["website"]."</a><br />"; ?> |
1 2 3 | echo "<a target='blank' rel='nofollow' href='".$row["http_www_website"]."' onClick='javascript: pageTracker._trackPageview('/outgoing/auto_accessoires/".$row["www_website"]."'")">".$row["website"]."</a><br />"; ?> |
Moet dit worden:quote:Op donderdag 26 maart 2009 17:39 schreef klusmeister het volgende:
1
2
3<?php
echo "<a target='blank' rel='nofollow' href='".$row["http_www_website"]."' onClick='javascript: pageTracker._trackPageview('/outgoing/auto_accessoires/".$row["www_website"]."'")">".$row["website"]."</a><br />";
?>
1 2 3 4 5 6 7 | echo "<a target='blank' rel='nofollow' href='".$row["http_www_website"] . "' onClick='javascript: pageTracker._trackPageview('/outgoing/auto_accessoires/" . $row["www_website"]. "')>" .$row["website"]. "</a><br />"; ?> |
Het werkt! Bedankt!quote:Op donderdag 26 maart 2009 17:55 schreef slacker_nl het volgende:
[..]
Moet dit worden:
[ code verwijderd ]
1 |
Hmm.. Hij werkt wel (je ziet hem op de site) maar de klik wordt niet vastgelegd door analytics.quote:Op donderdag 26 maart 2009 17:55 schreef slacker_nl het volgende:
[..]
Moet dit worden:
[ code verwijderd ]
De fout zit niet bij de ( maar bij de ' erna. Daar moet een \ voor. Ook voor de ' aan het eind van die url moet een \ en na de ) moet nog een '.quote:Op donderdag 26 maart 2009 19:59 schreef klusmeister het volgende:
[..]
Hmm.. Hij werkt wel (je ziet hem op de site) maar de klik wordt niet vastgelegd door analytics.
Het gaat volgens firefox fout bij het onClick='javascript: pageTracker._trackPageview('/outgoing/auto_accessoires/www.carfantasy.nl')>
gedeelte (vanaf /outgoing en verder wordt het rood aangegeven)
Ik ga nog even proberen.
[ afbeelding ]
edit : Ik kan na bij (' de ' wel weglaten maar dan wordt de uitgaande klik niet meer vastgelegd
Als ik je aanwijzing opvolg krijg ik hem zo:quote:Op donderdag 26 maart 2009 20:16 schreef Light het volgende:
[..]
De fout zit niet bij de ( maar bij de ' erna. Daar moet een \ voor. Ook voor de ' aan het eind van die url moet een \ en na de ) moet nog een '.
1 |
ik zit een beetje met de " (de dubbele versie ivm gebruik php).quote:Op donderdag 26 maart 2009 20:26 schreef qu63 het volgende:
maak er eens onClick="javascript: pageTracker._trackPageview('/outgoing/auto_accessoires/www.carfantasy.nl')"> van?
1 2 3 | echo "<a target='blank' rel='nofollow' href='".$row["http_www_website"]."' onClick='javascript: pageTracker._trackPageview('/outgoing/auto_accessoires/".$row["www_website"]."')>".$row["website"]."</a><br />"; ?> |
Nee, die dingen moet je niet weghalen.quote:Op donderdag 26 maart 2009 20:26 schreef klusmeister het volgende:
[..]
Als ik je aanwijzing opvolg krijg ik hem zo:
[ code verwijderd ]
Maar dan werkt het ook niet, moet ik de ''s dan weghalen?
Ja, dat hele stuk in het rood geeft dus aan dat het nog niet goed is.quote:Op donderdag 26 maart 2009 20:32 schreef klusmeister het volgende:
[..]
ik zit een beetje met de " (de dubbele versie ivm gebruik php).
[ code verwijderd ]
Dit is de code nu, maar legt de klik niet vast resultaat:
[ afbeelding ]
1 2 3 | echo '<a target="blank" rel="nofollow" href="'.$row['http_www_website'].'" onClick="javascript: pageTracker._trackPageview(\'/outgoing/auto_accessoires/'.$row['www_website'].'")\'>'.$row['website'].'</a><br />'; ?> |
quote:Op donderdag 26 maart 2009 20:34 schreef Light het volgende:
[..]
Nee, die dingen moet je niet weghalen.
Als je bij die attributen altijd ".." gebruikt en bij javascript '..' dan heb je geen conflicten met begin en einde van een string. En dan krijg je dus iets zoals wat qu63 schrijft.
1 2 3 | echo "<a target='blank' rel='nofollow' href='".$row["http_www_website"]."' onClick="javascript: pageTracker._trackPageview('/outgoing/auto_accessoires/".$row["www_website"]."')">".$row["website"]."</a><br />"; ?> |
quote:
Oh dank je, dit is code die ik zelf geschreven hebquote:Op donderdag 26 maart 2009 16:20 schreef Catch22- het volgende:
ik zou even een kant en klaar scriptje zoeken, die image classes zijn echt brak vaak.
Je kunt ook eerst php afsluiten, dan je html doen, en dan php weer openen. Scheelt je een hoop gedoe met " en 'quote:Op donderdag 26 maart 2009 21:06 schreef klusmeister het volgende:
[..]in html is het voor mij geen probleem, maar in php krijg ik het (nog
) niet voor elkaar om ze om te draaien, krijg continue parse error expected enz
Mijn probleem heeft niet specifiek iets met watermarks te maken.quote:Op donderdag 26 maart 2009 21:17 schreef Catch22- het volgende:
@Superrembo, ik ben daar ook eens mee bezig geweest. Is echt vrij gaar om te doen. Helemaal als je met verschillende bestandsformaten werkt.
http://www.hotscripts.com/listing/image-resize-and-watermark/
is dat wat? googlede ik zo even
ja, maar vaak gaan die standaardscripts uit van transparante pngs voor een watermerk, dus dan zit je gelijkt goedquote:Op donderdag 26 maart 2009 22:34 schreef SuperRembo het volgende:
[..]
Mijn probleem heeft niet specifiek iets met watermarks te maken.
Het probleem is dat imagecopymerge de alpha-transparantie weg gooit. Imagecopy doet het wel goed, maar daar heb je niet de mogelijkheid om de transparantie van het hele plaatje aan te passen.
dit is gewoon basissemantiek hoor.quote:Op donderdag 26 maart 2009 21:06 schreef klusmeister het volgende:
[..]in html is het voor mij geen probleem, maar in php krijg ik het (nog
) niet voor elkaar om ze om te draaien, krijg continue parse error expected enz
Alleen als "weer" een constante is. Het is iig geen variabele, want er staat geen $ voor. En het is geen functie, want er staat geen () achter. Het is ook geen string, want die moet tussen quotjes staan.quote:Op donderdag 26 maart 2009 23:56 schreef Dawnbreaker het volgende:
nvm opgelost:
<a href="<?php echo $siteurl.weer;?>"> linkje </a> is de correcte php code
1 |
Idd, maar op 1 pagina komen 100derden links, dan wordt het qua code erg onoverzichtelijk..quote:Op donderdag 26 maart 2009 21:17 schreef Light het volgende:
[..]
Je kunt ook eerst php afsluiten, dan je html doen, en dan php weer openen. Scheelt je een hoop gedoe met " en '
Thanks, ga wel eens ff kijken!quote:Op donderdag 26 maart 2009 16:43 schreef hoerezooi het volgende:
[..]
gebruik het zend framework welke in zich heel veel gebruikt maakt van patterns oa singeltons, factory's,chain of command, mvc.
1 2 3 | echo '<a target="blank" rel="nofollow" href="'.$row['http_www_website'].'" onClick="javascript: pageTracker._trackPageview(\'/outgoing/auto_accessoires/'.$row['www_website'].')"\'>'.$row['website'].'</a><br />'; ?> |
Als je door de enorm lange code niet meer ziet wat je aan het doen bent, breek het dan gewoon op in begrijpelijke stukken! Zo ziet je code er uit als je het opbreekt in een paar logische stukken:quote:Op vrijdag 27 maart 2009 09:41 schreef klusmeister het volgende:
Met deze code:
[ code verwijderd ]
komt het er zo:
[ afbeelding ]
uit te zien.. bijna(?) dus, iemand nog een idee wat ik kan proberen om de uitgaande klik goed te kunnen meten?
1 2 3 4 5 6 | $url = $row['http_www_website']; $onclick = 'javascript: pageTracker._trackPageview(\'/outgoing/auto_accessoires/'.$row['www_website'].')'; $linkText = $row['website']; echo '<a target="blank" rel="nofollow" href="'.$url.'" onClick="'.$onclick.'"\'>'.$linkText.'</a><br />'; ?> |
Ook dan blijf ik met het ' verhaal zitten.quote:Op vrijdag 27 maart 2009 11:07 schreef Roy_T het volgende:
Met Rembo eens. Wel een typo op regel 5: een \' die er niet hoort(na de onclick)
En net omdat ik de fout niet kan ontdekken kwam ik hier voor hulp..quote:Op vrijdag 27 maart 2009 11:25 schreef SuperRembo het volgende:
Ik heb de code alleen opgeknipt in logische stukken. Alle fouten staan er inderdaad nog in.
Maar dat kan je toch ook in je voordeel gebruiken, door de broncode uit FF te kopieren? Want die is dan al "gefixed" of werkt dat niet?quote:Op vrijdag 27 maart 2009 10:16 schreef ralfie het volgende:
je moet de laatste 'en " nog omdraaien
Mag ik je een tip geven? als je broncode wil controleren, doe dit nooit in Firefox (als het gaat om quotes ed). Sure, het ziet er overzichtelijker uit, maar Firefox heeft de neiging om de broncode her en der al wat te fixen, door elementen en quotes en dergelijke toe te voegen en weg te halen. Ben er al vaker ingetuind, uren mn php doorgespit waar dat ene element of quoteje nou vandaan komt...
De broncode van Firefox is niet 100% dat wat de browser van de server krijgt, dat van bijvoorbeeld internet explorer is dat altijd wel. Ik gebruik IE nooit, behalve voor broncode's...
Nee helemaal niet, integendeel, soms is een zet in de goede richting erg fijn, ik ben alweer een stuk verder gekomen door eerder advies hier.quote:Op vrijdag 27 maart 2009 11:31 schreef SuperRembo het volgende:
Wil je een paar tips om fouten op te sporen en in de toekomst te voorkomen, of heb je liever dat iedereen telkens al je typfoutjes komt fixen
Firebug wel, maar Firefox "view source" niet.quote:Op vrijdag 27 maart 2009 10:16 schreef ralfie het volgende:
Sure, het ziet er overzichtelijker uit, maar Firefox heeft de neiging om de broncode her en der al wat te fixen, door elementen en quotes en dergelijke toe te voegen en weg te halen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class Modules { var $modules = array(); function __construct() { $dir = opendir("../modules"); while (false !== ($file = readdir($dir))) { if (is_dir("../modules/$file") && !preg_match("/\.\.?/", $file)) { $mod = new Module($file); array_push($this->modules, $mod); } } } } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | class Module { var $templatedir; var $linkname; function __construct($name) { $this->templatedir = "../modules/".$td."/templates"; if(file_exists("../modules/$name/$name.php")) require("../modules/$name/$name.php"); if(file_exists("../modules/$name/$name_admin.php")) require("../modules/$name/$name_admin.php"); } function getModuleByName($name) { foreach($this->modules as $module) { if ($module->name == $name) { return $module; } } } } ?> |
1 2 3 | $modules->getModuleByName("agenda")->index($args); ?> |
Maak de Module class een extensie van een abstracte class met daarin functies die je extended class moet implementeren. Maak elke module class een unique naam, en instanieer deze. Dan hoef je alleen nog maar $modulenaam->index() te doen, zonder dat je via de getModuleByname() iets hoeft te doen.quote:Op vrijdag 27 maart 2009 14:18 schreef daReaper het volgende:
Ik zit wat te klooien met OO-programmeren, maar ik kom ergens niet helemaal uit.
Ik heb een site gemaakt, en aan die site wil ik modules kunnen toevoegen. Dit is enkel een directory met bestandjes, die je alleen maar aan de modules-directory hoeft toe te voegen, en het werkt al.
Nou heb ik een bestand modules.php met daarin de klasse Modules. Deze klasse kijkt in de modules directory om te zien welke modules er zijn.
[ code verwijderd ]
Zoals je daar ziet, wordt voor elke module weer een nieuw object aangemaakt van de klasse Module
[ code verwijderd ]
in deze module gaat het echter niet helemaal goed.
In die includes wordt ten eerste $this->linkname bepaald, wat geen probleem is. Er staat (staan) echter ook functies in, in elk geval de functie index($args). Hoe kan ik er nou voor zorgen dat deze functies gewoon onderdeel worden van het nieuw aangemaakte object? Beetje moeilijk uit te leggen allemaal, maar uiteindelijk wil ik in het hoofdscript het volgende stukje script gebruiken:
[ code verwijderd ]
Ik hoop dat het een beetje begrijpelijk is... Hoe kan ik dit oplossen?
Ik vrees dat ik het niet helemaal snap :@ Ben nog een beetje een beginner met OOP.quote:Op vrijdag 27 maart 2009 14:23 schreef Scorpie het volgende:
[..]
Maak de Module class een extensie van een abstracte class met daarin functies die je extended class moet implementeren. Maak elke module class een unique naam, en instanieer deze. Dan hoef je alleen nog maar $modulenaam->index() te doen, zonder dat je via de getModuleByname() iets hoeft te doen.
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 | class Modules implements IteratorAggregate { var $modules = array(); function __construct() { $dir = opendir("../modules"); while (false !== ($file = readdir($dir))) { if (is_dir("../modules/$file") && !preg_match("/\.\.?/", $file)) { if(file_exists("../modules/$file/$file.php")) require("../modules/$file/$file.php"); if(file_exists("../modules/$file/$file_admin.php")) require("../modules/$name/$name_admin.php"); $mod = new $file(); array_push($this->modules, $mod); } } } public function getIterator() { return new MyIterator($this->modules); } function getModuleByName($name) { foreach($this->modules as $module) { if ($module->name == $name) { return $module; } } } } $modules = new Modules(); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 | class Module { var $templatedir; var $linkname; var $name; function __construct($name) { $this->templatedir = "../modules/".$td."/templates"; $this->name = $name; } } ?> |
1 2 3 4 5 6 7 8 9 | $this->linkname = "Agenda"; class agenda implements Module { function index($args) { [...] } } ?> |
Een interface is wat anders dan een abstrace class.quote:Op vrijdag 27 maart 2009 14:51 schreef daReaper het volgende:
[..]
Ik vrees dat ik het niet helemaal snapBen nog een beetje een beginner met OOP.
Die getModuleByName() wil ik eigenlijk wel houden. Ik heb zojuist ook een functie op php.net gevonden die ik in mijn Modules klasse kon stoppen, zodat ik een foreach() op de $modules kan gooien, waarbij $modules dan elke keer een nieuwe module returnt.
Ik snap alleen niet zo goed wat dat eerste is, wat je daar zegt. Mijn Modules klasse ziet er nu zo uit:
[ code verwijderd ]
de Module klasse ziet er zo uit:
[ code verwijderd ]
Agenda.php:
[ code verwijderd ]
Maar dit geeft een error: Fatal error: agenda cannot implement Module - it is not an interface in C:\severjanin\modules\agenda\agenda.php on line 4
Zoals ik al zei: ik ben nog een beetje een beginneling hierin. Wat houdt dat "interface" in?
Waarom zou je dat willen houden? Het is een dure operatie die eigenlijk onnodig is, aangezien je al de naam weet van de module die je wilt aanspreken. Dan heeft het geen zin om IEDERE keer weer die modules lijst op te halen en aan te spreken, roep dan direct de controller van de module zelf aan.quote:Op vrijdag 27 maart 2009 14:51 schreef daReaper het volgende:
[..]
Ik vrees dat ik het niet helemaal snapBen nog een beetje een beginner met OOP.
Die getModuleByName() wil ik eigenlijk wel houden. Ik heb zojuist ook een functie op php.net gevonden die ik in mijn Modules klasse kon stoppen, zodat ik een foreach() op de $modules kan gooien, waarbij $modules dan elke keer een nieuwe module returnt.
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 | interface ModFuncs { public function index($args); } abstract class Module implements ModFuncs { var $templatedir; var $linkname; var $name; function __construct() { $this->name = get_class($this); $this->templatedir = "../modules/".$this->name."/templates"; } } class Modules implements IteratorAggregate { var $modules = array(); function __construct() { $dir = opendir("../modules"); while (false !== ($file = readdir($dir))) { if (is_dir("../modules/$file") && !preg_match("/\.\.?/", $file)) { if(file_exists("../modules/$file/$file.php")) require("../modules/$file/$file.php"); if(file_exists("../modules/$file/$file_admin.php")) require("../modules/$name/$name_admin.php"); $mod = new $file(); array_push($this->modules, $mod); } } } public function getIterator() { return new MyIterator($this->modules); } function getModuleByName($name) { foreach($this->modules as $module) { if ($module->name == $name) { return $module; } } } } $modules = new Modules(); ?> |
1 2 3 4 5 6 7 8 9 10 | $this->linkname = "Agenda"; class agenda extends Module { function index($args) { [...] } } ?> |
Nu ik er over na denk is die functie ook niet meer van toepassing. $modules wordt aangemaakt en in het hoofdscript komt het volgende stukje script voorbij:quote:Op vrijdag 27 maart 2009 15:13 schreef Scorpie het volgende:
[..]
Waarom zou je dat willen houden? Het is een dure operatie die eigenlijk onnodig is, aangezien je al de naam weet van de module die je wilt aanspreken. Dan heeft het geen zin om IEDERE keer weer die modules lijst op te halen en aan te spreken, roep dan direct de controller van de module zelf aan.
De rest heeft Tiemie al verteld
quote:Op vrijdag 27 maart 2009 15:15 schreef daReaper het volgende:
[..]
Nu ik er over na denk is die functie ook niet meer van toepassing. $modules wordt aangemaakt en in het hoofdscript komt het volgende stukje script voorbij:
foreach($modules as $mod) {
array_push($menuitems, array($mod->name, $mod->linkname));
if ($page == $mod->name) {
$content = $mod->index($args);
}
}
Dat getModuleByName() heb ik bij nader inzien dus helemaal niet nodig.
Beeld->paginabron heb ik het over. Firebug heb ik niet eens geinstalleerd.quote:Op vrijdag 27 maart 2009 12:17 schreef Roy_T het volgende:
[..]
Firebug wel, maar Firefox "view source" niet.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |