Ik heb in PHP een probleem met een member variabel in een class, die static wordt nadat daar een statische variabel aan toe wordt gewezen via een return uit een functie.
Is er een manier om te zorgen dat een variabel niet statisch wordt na zo'n toewijzing? Ik heb geprobeerd te zoeken naar een functie die een kopie maakt van een variabel maar die heb ik ook niet kunnen vinden (ik zou ook niet weten waar die verder voor nodig zou zijn).
Het probleem wat ik heb kan ik denk ik het beste laten zien in een stukje code
Als ik dit uitvoer gaat het mis door een euwige loop. Ik reken erop dat variabel array geen client meer bevat als er een instantie van de class in domore() wordt gemaakt. Omdat die statisch is, is dat wel zo.
Als iemand nog een snellere oplossing weet dan wil ik dat graag ook horen.
(dit is niet hoe ik het precies heb uitgewerkt in de werkelijke class, ik weet dat het er hier een beetje omslachtig uitziet)
Is er een manier om te zorgen dat een variabel niet statisch wordt na zo'n toewijzing? Ik heb geprobeerd te zoeken naar een functie die een kopie maakt van een variabel maar die heb ik ook niet kunnen vinden (ik zou ook niet weten waar die verder voor nodig zou zijn).
Het probleem wat ik heb kan ik denk ik het beste laten zien in een stukje 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
| <?php class test { var $array; var $instance; function test($var) { $this->array = $this->dosome($var); $this->domore(); var_dump($this); } function dosome($var) { static $result = array(); $result[$var] = $var; return $result; } function domore() { if ( in_array("client", $this->array) ) { $this->instance = new test("function"); } } } $t1 = new test("client"); ?> |
Als ik dit uitvoer gaat het mis door een euwige loop. Ik reken erop dat variabel array geen client meer bevat als er een instantie van de class in domore() wordt gemaakt. Omdat die statisch is, is dat wel zo.
Als iemand nog een snellere oplossing weet dan wil ik dat graag ook horen.
(dit is niet hoe ik het precies heb uitgewerkt in de werkelijke class, ik weet dat het er hier een beetje omslachtig uitziet)