-1

Loaderクラスを拡張するクラスがあります。そして、そのようにLoaderクラス内で宣言されたクラス-

class Loader
{   

    public $sql;
    public $logger;
    public $view;
    public $model;
    public $config;
    public $url_data;



    public function __construct()
    {
        $url_accepted = $_GET['url'];
        $this->config = $GLOBALS['config'];

        $database_connection = some array...
        $this->sql = new dbHandler($database_connection);

        $this->logger = new logger();

        $this->view = new view();
        $this->view->set_view($config['view']['view']);
        $this->model = new model();
        ...
        require_once("app/controllers/frame.php");

ビューとモデルはクラスextendsLoaderであり、frameはLoaderを拡張しますが、frameも拡張されます。
何らかの理由で、SQLが多くの接続を必要とし、phpがメモリ不足になるまでループしますが、ローダーが宣言される場所はindex.phpだけです-

require_once("app/includes/loader.php");

$loader = new Loader();

何が問題なのかわかりませんが、ソースがビューとモデルの宣言であることは知っています。「extendsLoader」と$thisを使用してローダー値にアクセスする場合を除いて、モデルとビューの両方にローダーへの参照はありません。

ペーストビンのコード-http ://pastebin.com/u/Yehonatan

誰かが私がこの問題を解決するのを手伝ってもらえますか?

4

2 に答える 2

1

"extends Loader" と $this を使用してローダーの値にアクセスする場合を除いて、モデルとビューの両方にローダーへの参照はありません。

これがサイトなら

class Loader {
  // ...
  public function __construct() {
    // ...
    $this->view = new view();
    // ...
    $this->model = new model();
  }
}

class view extends Loader { 
  // ...
}

class model extends Loader {
  // ...
}

メソッドを上書きする必要があります__construct()。モデル/ビュークラスが__construct()モデル/ビューオブジェクトを作成するローダーのメソッドを使用しない場合->再帰

于 2012-07-31T07:22:22.930 に答える
1
class Loader
   {   
    public $sql;
    public $logger;
    public $view;
    public $model;
    public $config;
    public $url_data;



    public function __construct()
    {
        $url_accepted = $_GET['url'];
        $this->config = $GLOBALS['config'];

        $database_connection = some array...
        $this->sql = new dbHandler($database_connection);

        $this->logger = new logger();

        $this->view = new view();
        $this->view->set_view($config['view']['view']);
        $this->model = new model();
        ...
        require_once("app/controllers/frame.php");

もう 1 つの質問、「Loader を拡張する」というのは、モデルとビュー クラスが loader を拡張するということですか? この場合、再帰を通過することは非常に明白です。この場合__construct()、ビューとモデルで をオーバーライドする必要があります。

class View extends Loader 
{ 
   public function __construct() 
   { 
     // do something
   }
}

class Model extends Loader 
{
   public function __construct() 
   { 
     // do something
   }
}

理由を理解していただければ幸いです。そうでない場合は、喜んで説明させていただきます。

于 2012-07-31T07:36:27.337 に答える