Ey, ik heb nu dit ergens gevonden en zolang de functie die ik wil "include" geen paramters heeft werkt het goed. Maar bijvoorbeeld mijn database class heeft 4 parameters mar ik krijg het niet voor elkaar om die parameters mee te geven in die class. Dit is de class
I don't know . Ik heb het ook maar van een site afgeplukt omdat ik er geen zak van snap. Maar ik kan nog steeds niets vinden, lijkt wel of niemand dit probleem heeft .
Ik heb het nu wat aangepast maar ik krijg nu alleen maar errors:
Citaat:
Strict Standards: Assigning the return value of new by reference is deprecated in D:programsxampphtdocs***incclasssingleton.php on line 13
Parse error: syntax error, unexpected '&' in D:programsxampphtdocs***incclasssingleton.php on line 17
<?php
include './inc/class/database.php';
include './inc/class/log.php';
class singleton {
static $instances = array();
public static function &getInstance($class) {
if(!array_key_exists($class, $instances)) {
$instances[$class] =& new $class();
}
return &$instances[$class];
}
}
?>
Kijk die tutorial van Koen nog eens door. Want het is niet de bedoeling dat je 1 class maakt genaamd 'singleton' en daar vanuit alles regelt. Op die manier moet je bij implementatie van een nieuwe class ook deze weer aanpassen. Je krijgt dan dus een soort afhankelijkheid, iets wat niet gewenst is.
@Proximus, hoebedoel je? Op deze manier word elke class toch maar 1 keer geinstancierd? En dat is toch precies de bedoeling?
Edit: nu loop ik weer tegen het oorspronkelijke probleem aan: ik kon geen parameters aan een class meegeven als dat nodig is.
Gebruik ik hier dan singleton wel goed of niet? Want zover ik weet was werd dit toch vaak gebruik icm singleton (Classe instancieren). Laat me even weten als dat niet het geval is ofzo..
Bij getInstance moet je een tweede optionele parameter zetten. Die tweede is een array met eventuele contructor options. De & is niet nodig voor new $class want die geeft een E_STRICT error in PHP5. In PHP4 gebruik je wel de &.
Krijg ik onderstaande error, hij splits de argumenten dus niet goed want hij pakt alleen de eerste.
Citaat:
Warning: Missing argument 2 for Database::__construct(), called in D:programsxampphtdocs***incclasssingleton.php on line 17 and defined in D:programsxampphtdocs***incclassdatabase.php on line 8
Warning: Missing argument 3 for Database::__construct(), called in D:programsxampphtdocs***incclasssingleton.php on line 17 and defined in D:programsxampphtdocs***incclassdatabase.php on line 8
Warning: Missing argument 4 for Database::__construct(), called in D:programsxampphtdocs***incclasssingleton.php on line 17 and defined in D:programsxampphtdocs***incclassdatabase.php on line 8
Met implode maak je een string van de argumenten dus uiteindelijk krijg je maar één argument. Ik ga nu even opzoeken hoe je dat kunt verhelpen, volgens mij kon je dit makkelijk met een of andere functie doen.
Met implode maak je een string van de argumenten dus uiteindelijk krijg je maar één argument. Ik ga nu even opzoeken hoe je dat kunt verhelpen, volgens mij kon je dit makkelijk met een of andere functie doen.Â
@Proximus, hoebedoel je? Op deze manier word elke class toch maar 1 keer geinstancierd? En dat is toch precies de bedoeling?
Edit: nu loop ik weer tegen het oorspronkelijke probleem aan: ik kon geen parameters aan een class meegeven als dat nodig is.
Gebruik ik hier dan singleton wel goed of niet? Want zover ik weet was werd dit toch vaak gebruik icm singleton (Classe instancieren). Laat me even weten als dat niet het geval is ofzo..
De singleton constructie moet je in de class zelf aanmaken. Dus die getInstance() methode moet in je db class komen. Het moet geen centrale class zijn die het voor jou bijhoudt. Dan ben je namelijk niet echt bezig met singleton maar met een Registry Pattern.
De singleton constructie moet je in de class zelf aanmaken. Dus die getInstance() methode moet in je db class komen. Het moet geen centrale class zijn die het voor jou bijhoudt. Dan ben je namelijk niet echt bezig met singleton maar met een Registry Pattern.
Maar als ik het nu via deze classe doe en dan in de config dan heb ik toch alles in 1? En zo staat het ook op andere site, wil niet zeggen dat die juist zijn ofzo..