![]() |
Hej!
Jag håller på att skriva en class och vill ha en funktion utanför classen som kan lista innehålla från samtliga definierade instanser av classen. Följande lösning fungarar inte, då endast saker som ändras i construktorn kommer med i $allapersoner Kod:
<?PHP Citat:
Hur löser man detta, eller ett annat bra sätt att lista vilka instansen som finns av en viss class? |
Jag tror att du tänker åt fel håll lite. Det är inte meningen att du skall försöka låta en klass hålla reda på dess instanser. Gör istället då en wrapper-klass som har en array med _referenser_ till objekten som du skapar, tex:
class PersonWrapper { // en ny wrapper-klass var $personer = new Array(); function PersonWrapper($nyttnamn) { // konstruktor instansiera array, lägg till referens till ny Person } class Person { // din gamla klass .... } } Eller, så har du helt enkelt en array som du definerar i ditt program och manuellt lägger till i? Du kan ju eventuellt skicka med en referens till arrayen till klassen och låta den där lägga till (dålig lösning dock). |
Citat:
Jag hittade en lösning som funkar, Kod:
<?PHP och har skrivet om och gjort på ett helt annat sätt istället. Tack för hjälpen! |
Om det kan vara till någon hjälp besökte jag för ett tag sedan Zends websida, där de har publicerat diverse information om PHP5 och dess nya funktioner, där OOP då är belyst. Där har de på en sida en hel del smarta lösningar som man kan använda. Om jag inte missminner mig (vilket är mycket möjligt just nu 05:13 ;) ) är det kanske ett enligt dem sk. "factory" som du är ute efter.
De har även information om "singleton", "autoloader" etc. väldigt praktiska och hjälpsamma funktioner :) Jag har dock tyvärr ej länkarna i huvudet. Besök Zend -> Webmaster något -> Information om OOP med PHP5 :) Även om du redan har löst det här problemet är det nog väldigt givande. |
om man är nyfiken på detta problem kan man läsa i php manualen
om referenser i konstruktorn. http://www.php.net/manual/sv/language.oop.newref.php |
Alla tider är GMT +2. Klockan är nu 17:43. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson