出於某種原因,我得到這個錯誤:在PHP中編程OOP時出現意外的錯誤?
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 36 bytes) in C:\xampp\htdocs\school\blom\inlog dinkie\engine\class.php on line 13
在這段代碼:
<?php
class gebruiker extends start{
private $_login_form;
public $log_in;
public $logged_in;
function __construct(){
$this->logged_in = false;
$this->_login_form = new login_form();
parent::html($this->_login_form);
}
function log_in(){
$html = $this->_login_form;
if($this->log_in){
$go = true;
if(!$_REQUEST['naam']){
$this->_login_form->error_naam = 'vul je naam in!';
$go = false;
}
else{
$this->_login_form->naam = $_REQUEST['naam'];
}
if(!$_REQUEST['pass']){
$this->_login_form->error_pass = 'vul je pass in!';
$go = false;
}
else{
$this->_login_form->pass = $_REQUEST['pass'];
}
//go log in
$html = $dom->saveHTML();
}
parent::html($this->_login_form->form());
}
}
class login_form extends gebruiker{
protected $html;
protected $error_naam = ' ';
protected $error_pass = ' ';
protected $naam = '';
protected $pass = '';
function form(){
$this->html = ' <center>
<div style="border:1px dotted rgb(169, 169, 169); width:572px; height:196px; background-color:rgba(40, 152, 250, 0.670588);margin-top:200px;">
<h4 id="title">Inloggen</h4>
<br>
<form action="./?login" method="post">
<table>
<tr>
<td id="error_naam">'.$error_naam.'</td>
<td id="error_pass">'.$error_pass.'</td>
</tr>
<tr>
<td><input id="naam" type="text" placeholder="naam" name="naam" value="'.$naam.'" /></td>
<td><input id="pass" type="password" placeholder="wachtwoord" name="pass" value="'.$pass.'" /></td>
</tr>
<tr>
<td><input type="submit" value="Inloggen" /></td>
<td></td>
</tr>
</table>
</div>
</center>';
return $this->html;
}
}
?>
這是這方面的一個後端:
<?php
include_once('engine/database.php');
include_once('engine/class.php');
$start = new start();
class start{
private $_html;
function __construct(){
session_start();
if(isset($_SESSION['gebruiker'])){
if(isset($_REQUEST['login'])){
$_SESSION['gebruiker']->log_in = true;
$_SESSION['gebruiker']->log_in();
}
elseif(isset($_REQUEST['register'])){
//register
}
elseif(!$_SESSION['gebruiker']->logged_in){
$_SESSION['gebruiker']->log_in = false;
$_SESSION['gebruiker']->log_in();
}
else{
switch($_REQUEST['actie']){
case 'iets':
//dostuf
break;
default:
echo 'deafauasdfasdr';
break;
}
}
}
else{
$_SESSION['gebruiker'] = new gebruiker();
//$new = new gebruiker();
}
}
protected function html($html = 'emty'){
$this->_html = $html;
}
function __destruct(){
echo $this->_html;
}
}
?>
現在我認爲,我得到這個錯誤是因爲我將gebruiker()
類存儲在$_SESSION
中。我沒有聲明很多代碼,所以我不明白爲什麼我達到了內存限制。
還是因爲我不能在$_SESSION
內存儲這麼多擴展的功能類?
好吧,我明白了,我解決了這個問題。這對我來說是新的,所以謝謝你的明確解釋。我有任何方式審查我的代碼。在SESSION中存儲整個對象是一個愚蠢的ID,所以我從頭開始重新開始。我現在更瞭解OOP的概念謝謝! PS,哇,你用1聲望回答了這個問題!我是第一個從你的知識中獲益的人。 – botenvouwer 2013-03-27 21:37:12