abonnement Unibet Coolblue Bitvavo
pi_67434810
Ik laat mijn vorige probleem even voor wat het is... (http://forum.fok.nl/topic/1268583#67428173)
Heb ik direct een nieuwe vraag

Mijn url ziet er als volgt uit:

pagina.php?var1=waarde&var2=waarde&var3=waarde&page=1
De url haal ik op dmv $_SERVER['REQUEST_URI']
Nu wil ik hierin de waarde van url variabele page vervangen door een andere waarde (pagina nummer).
Hoe werkt dit. Ik kan 0,0 reguliere expressies.. En ik denk dt ik die nu wel nodig heb.
Iemand ideetje?
Amsterdam, stad van hash en coke,
Waar de vrouwen zich vrouwelijk gedragen..
En de mannen ook..
  donderdag 26 maart 2009 @ 16:43:01 #155
56176 Catch22-
Ben je Blind?!
pi_67435035
wrom gebruik je niet gewoon $_GET ?
Heel veel groetjes, Catch22
En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
Met GHB nooit meer nee
Storneren een optie?
pi_67435063
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?
gebruik het zend framework welke in zich heel veel gebruikt maakt van patterns oa singeltons, factory's,chain of command, mvc.
pi_67437009
Hallo,

Ik zit met hetvolgende, ik heb html pagina die volledig handwerk is. Op deze pagina staan een paar honderd links als:

1<a target="blank" rel="nofollow" href="http://www.carfantasy.nl/" onClick="javascript: pageTracker._trackPageview('/outgoing/auto_accessoires/www.carfantasy.nl')">carfantasy.nl</a><br />


Nu ben ik stap voor stap deze proberen na te maken / uit te lezen via php en een database

1
2
3
4
<?php
$sql 
"SELECT website, www_website, http_www_website, cat_1 FROM ww WHERE cat_1 LIKE'cat1%'"
$resultaat mysql_query($sql);
?>


1
2
3
<?php
echo "<a target='blank' rel='nofollow' href='".$row["http_www_website"]."'>".$row["website"]."</a><br />";
?>


Dit werkt goed, ik krijg alleen errors wanneer ik het "onclick javascript gedeelte" wil toevoegen, dan kom ik er niet meer uit qua "''; ""'' enz

Ik heb nu zoiets:

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 />";
?>


Dit hierboven geeft een Parse error: syntax error, unexpected ')', expecting ',' or ';'

Kan iemand met een oog voor dit soort zaken zien waar het fout gaat, zodat de uitgaande klik wel gemeten wordt in analytics?

Gr, Herman (ben er over 2 uurtjes pas weer, voor de snelle reageerders ;-) )
  donderdag 26 maart 2009 @ 17:55:30 #158
187069 slacker_nl
Sicko pur sang
pi_67437460
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 />";
?>
Moet dit worden:

1
2
3
4
5
6
7
<?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 />";
?>
In theory there is no difference between theory and practice. In practice there is.
pi_67437798
even een vraag waar ik mee zit, misschien makkie voor jullie:

ik heb deze code (html en php)

<a href="<?php $siteurl ?>" target="_parent"> de link </a>

De link wordt nu de site url (de homepage dus). Ik wil hem laten verwijzen naar de subdirectory /mijnfotos/

Hoe doe ik dit? ik heb al vanalles geprobeerd maar kom nu niet meer verder:

<a href="<?php $siteurl/mijnfotos/ ?>" target="_parent"> de link </a> werkt dus niet

[edit: codetags weggehaald want die verneukte de code]
&lt;hr&gt;
pi_67438670
quote:
Op donderdag 26 maart 2009 17:55 schreef slacker_nl het volgende:

[..]

Moet dit worden:
[ code verwijderd ]


Het werkt! Bedankt!
  donderdag 26 maart 2009 @ 19:25:09 #161
56176 Catch22-
Ben je Blind?!
pi_67440182
1<a href="<?php $siteurl ?>/mijnfotos/" target="_parent"> de link </a>

en target=parent? gebruik je frames oid ?
Heel veel groetjes, Catch22
En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
Met GHB nooit meer nee
Storneren een optie?
pi_67441390
quote:
Op donderdag 26 maart 2009 17:55 schreef slacker_nl het volgende:

[..]

Moet dit worden:
[ code verwijderd ]


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.


edit : Ik kan na bij (' de ' wel weglaten maar dan wordt de uitgaande klik niet meer vastgelegd

[ Bericht 6% gewijzigd door klusmeister op 26-03-2009 20:06:59 ]
pi_67441992
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
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 '.
pi_67442307
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 '.
Als ik je aanwijzing opvolg krijg ik hem zo:
1<a target='blank' rel='nofollow' href='http://www.carfantasy.nl' onClick='javascript: pageTracker._trackPageview(\'/outgoing/auto_accessoires/www.carfantasy.nl\')'>carfantasy.nl</a><br />


Maar dan werkt het ook niet, moet ik de ''s dan weghalen?
  donderdag 26 maart 2009 @ 20:26:59 #165
62215 qu63
..de tijd drinkt..
pi_67442342
maak er eens onClick="javascript: pageTracker._trackPageview('/outgoing/auto_accessoires/www.carfantasy.nl')"> van?
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_67442507
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?
ik zit een beetje met de " (de dubbele versie ivm gebruik php).
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 />";
?>


Dit is de code nu, maar legt de klik niet vast resultaat:
pi_67442574
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?
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.
pi_67442602
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 ]
Ja, dat hele stuk in het rood geeft dus aan dat het nog niet goed is.
pi_67442719
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 />';
?>
Zoiets?
pi_67442811
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
<?php
echo "<a target='blank' rel='nofollow' href='".$row["http_www_website"]."' onClick="javascriptpageTracker._trackPageview('/outgoing/auto_accessoires/".$row["www_website"]."')">".$row["website"]."</a><br />";
?>


Dit is de toepassing zoals qu63 omschrijft, dan krijg ik een Parse error: syntax error, unexpected T_STRING, expecting ',' or ';'
pi_67442911
quote:
Op donderdag 26 maart 2009 20:38 schreef Light het volgende:

[ code verwijderd ]

Zoiets?


Op het laatste stukje gaat 't net mis.
  donderdag 26 maart 2009 @ 20:49:30 #172
56176 Catch22-
Ben je Blind?!
pi_67443100
je moet die laatste ' en " omdraaien
Heel veel groetjes, Catch22
En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
Met GHB nooit meer nee
Storneren een optie?
pi_67443702
quote:
Op donderdag 26 maart 2009 20:49 schreef Catch22- het volgende:
je moet die laatste ' en " omdraaien
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
pi_67443973
quote:
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.
Oh dank je, dit is code die ik zelf geschreven heb
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_67444077
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
Je kunt ook eerst php afsluiten, dan je html doen, en dan php weer openen. Scheelt je een hoop gedoe met " en '
  donderdag 26 maart 2009 @ 21:17:26 #176
56176 Catch22-
Ben je Blind?!
pi_67444090
http://www.woelmuis.nl/

banner hiernaast. Iemand dit al geprobeerd? Misschien als testdomeintje.

@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
Heel veel groetjes, Catch22
En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
Met GHB nooit meer nee
Storneren een optie?
pi_67447037
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
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.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  donderdag 26 maart 2009 @ 23:12:57 #178
56176 Catch22-
Ben je Blind?!
pi_67448410
quote:
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.
ja, maar vaak gaan die standaardscripts uit van transparante pngs voor een watermerk, dus dan zit je gelijkt goed
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
dit is gewoon basissemantiek hoor.

Als je een " opent en daarna een ', sluit je eerst de ' en dan de "

dat is toch met alles zo ?
Heel veel groetjes, Catch22
En zoals mijn opa zei: "Al is het meisje nog zo mooi, haar poep stinkt ook". Rust Zacht opa..
Met GHB nooit meer nee
Storneren een optie?
pi_67449542
iemand een oplossing hiervoor:

even een vraag waar ik mee zit, misschien makkie voor jullie:

ik heb deze code (html en php)

<a href="<?php $siteurl ?>"> de link </a>

De link wordt nu de site url (de homepage dus). Ik wil hem laten verwijzen naar de subdirectory /mijnfotos/

Hoe doe ik dit? ik heb al vanalles geprobeerd maar kom nu niet meer verder:

<a href="<?php $siteurl/mijnfotos/ ?>"> de link </a> werkt dus niet


dus: hoe gebruik je $siteurl om ook naar een subdir te verwijzen
&lt;hr&gt;
pi_67449679
nvm opgelost:

<a href="<?php echo $siteurl.weer;?>"> linkje </a> is de correcte php code
&lt;hr&gt;
pi_67452756
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
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.
1<a href="<?php echo $siteurl; ?>weer"> linkje </a>
pi_67454227
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 '
Idd, maar op 1 pagina komen 100derden links, dan wordt het qua code erg onoverzichtelijk..
pi_67454418
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.
Thanks, ga wel eens ff kijken!
pi_67455037
Met deze code:

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 />';
?>


komt het er zo:



uit te zien.. bijna(?) dus, iemand nog een idee wat ik kan proberen om de uitgaande klik goed te kunnen meten?
  vrijdag 27 maart 2009 @ 10:16:02 #185
85514 ralfie
!Yvan eht nioj
pi_67455893
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...
pi_67455935
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?
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:

1
2
3
4
5
6
<?php
$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 />';
?>


Dan zie je meteen waar de fout zit. (Ik tenminste wel :P)
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_67457042
Met Rembo eens. Wel een typo op regel 5: een \' die er niet hoort (na de onclick)
pi_67457332
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)
Ook dan blijf ik met het ' verhaal zitten.
pi_67457465
Ik heb de code alleen opgeknipt in logische stukken. Alle fouten staan er inderdaad nog in.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_67457508
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.
En net omdat ik de fout niet kan ontdekken kwam ik hier voor hulp..
pi_67457607
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...
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?
"Do me a favor, try not to think, you're going to hurt yourself"
"You go to heaven for the climate and hell for the company"
pi_67457664
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
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_67458190
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
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.

Ik kom er net achter dat met een simpele " \ " het foutje is opgelost.

Bedankt iig voor de hulp
pi_67458220
tvp
Redacted
pi_67458890
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.
Firebug wel, maar Firefox "view source" niet.
pi_67462434
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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
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);
      }
    }
  }
}
?>


Zoals je daar ziet, wordt voor elke module weer een nieuw object aangemaakt van de klasse Module

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
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;
      }
    }
  }
}
?>


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:

1
2
3
<?php
$modules
->getModuleByName("agenda")->index($args);
?>


Ik hoop dat het een beetje begrijpelijk is... Hoe kan ik dit oplossen?
Trotse poster van het 37000000ste bericht ^O^
pi_67462582
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?
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.
pi_67463422
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.
Ik vrees dat ik het niet helemaal snap :@ Ben 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:

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
<?php
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();
?>


de Module klasse ziet er zo uit:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class Module {
  var 
$templatedir;
  var 
$linkname;
  var 
$name;

  function 
__construct($name) {
    
$this->templatedir "../modules/".$td."/templates";
    
$this->name $name;
      
  }
}
?>


Agenda.php:
1
2
3
4
5
6
7
8
9
<?php
$this
->linkname "Agenda";

class 
agenda implements Module {
  function 
index($args) {
    [...]
  }
}
?>


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?
Trotse poster van het 37000000ste bericht ^O^
  vrijdag 27 maart 2009 @ 14:52:17 #199
46383 Tiemie
sowieso wel!
pi_67463468
quote:
Op vrijdag 27 maart 2009 14:51 schreef daReaper het volgende:

[..]

Ik vrees dat ik het niet helemaal snap Ben 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?
Een interface is wat anders dan een abstrace class.

een class Extend je, een interface moet je implementeren.
pi_67464174
quote:
Op vrijdag 27 maart 2009 14:51 schreef daReaper het volgende:

[..]

Ik vrees dat ik het niet helemaal snap Ben 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.
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
pi_67464175
na nog wat geklooi ben ik hier op uit gekomen, mochten jullie nog iets zien dat niet goed is, dan hoor ik dat graag

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
<?php
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();
?>


agenda.php:
1
2
3
4
5
6
7
8
9
10
<?php
$this
->linkname "Agenda";

class 
agenda extends Module {
  
  function 
index($args) {
    [...]
  }
}
?>


Maar als ik het goed begrijp, mag ik dan alleen een index() functie in m'n klasse agenda maken. Andere functies zijn niet oproepbaar, tenzij ik ze in de interface definieer?

Ah, het werkt wel degelijk, zie ik nu. Ik moest er alleen nog even $this-> voor zetten
Trotse poster van het 37000000ste bericht ^O^
pi_67464220
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
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.
Trotse poster van het 37000000ste bericht ^O^
pi_67464581
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.
  vrijdag 27 maart 2009 @ 16:43:16 #204
85514 ralfie
!Yvan eht nioj
pi_67467204
quote:
Op vrijdag 27 maart 2009 12:17 schreef Roy_T het volgende:

[..]

Firebug wel, maar Firefox "view source" niet.
Beeld->paginabron heb ik het over. Firebug heb ik niet eens geinstalleerd.
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')