PHP OOP Fatal error: Allowed memory size of 268435456 bytes exhausted
我想知道为什么我的PHP有致命的错误。
它说:
Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 130968 bytes)'
在Werknemer子类的最后
但我不知道为什么。 我的php.ini文件中有128 MB的内存。
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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | <head> <meta charset="UTF-8"> Persoon </head> <body> <?php class Persoon { public $naam; public $adres; public $email; public function __construct() { $this->naam = 'naam'; $this->adres = 'adres'; $this->email = 'email'; } public function getNaw() { return $this->naam . $this->adres . $this->email; } public function setNaam($naam) { $this->naam = $naam; } public function setAdres($adres) { $this->adres = $adres; } public function setEmail($email) { $this->email = $email; } } $persoon = new Persoon(); $persoon->setNaam("Harm"); $persoon->setAdres("Parkstraat 1"); $persoon->setEmail("[email protected]"); echo $persoon->getNaw(); class Werknemer extends Persoon { public $datumInDienst; public $datumUitDienst; public $Salaris; public $opslag; function __construct() { parent::__construct(); $this->datumInDienst = 'datumInDienst'; $this->datumUitDienst = 'datumUitDienst'; $this->Salaris = 'Salaris'; $this->geefOpslag = 'geefOpslag'; } public function setDatumInDienst($datumInDienst) { //return $this->datumInDienst; return $this->datumInDienst = $datumInDienst; } public function setDatumUitDienst($datumUitDienst) { //return $this->datumUitDienst; return $this->datumUitDienst = $datumUitDienst; } public function setSalaris($Salaris) { return $this->Salaris = $Salaris; } public function geefOpslag($geefOpslag) { return $this->geefOpslag($geefOpslag); } } $werknemer = new Werknemer(); echo '<br/><br/>Datum in dienst: ', $werknemer->setDatumInDienst('13/12/2015'); echo '<br/><br/>Datum uit dienst: ', $werknemer->setDatumUitDienst('13/12/2016'); echo '<br/><br/>Salaris: ', $werknemer->setSalaris(1500); echo '<br/><br/>Opslag: ', $werknemer->geefOpslag(200); ?> </body> |
你的问题在于方法
1 2 3 | public function geefOpslag($geefOpslag) { return $this->geefOpslag($geefOpslag); } |
当你调用这个方法时,它会一直调用自己 - 而且没有阻止它。 实际上,这会导致无限循环,这种循环运行的时间太长,以至于耗尽了所有的记忆。 它与运行
你的解决方案是让它返回一些东西,而不是再次调用它自己的方法 - 你应该返回
也许你正在寻找的是这个
1 | return $this->opslag = $geefOpslag; |