ホームページ  >  記事  >  バックエンド開発  >  thinkphpのコントローラークラスのコンストラクターについて

thinkphpのコントローラークラスのコンストラクターについて

WBOY
WBOYオリジナル
2016-06-20 12:41:361209ブラウズ

public function __construct() {        Hook::listen('action_begin',$this->config);        //实例化视图类        $this->view     = Think::instance('Think\View');        //控制器初始化        if(method_exists($this,'_initialize'))            $this->_initialize();    }

これは TP フレームワークのコントローラー クラスのコンストラクター コードです
View はこの関数を通じてコン​​トローラーに導入されるはずですが、Hook クラスと Think クラスはどのようにしてコントローラー クラスに導入されるのでしょうか? で。
Hook クラスや Think クラスを use や require なしで直接使用することはできますか?


ディスカッションへの返信 (解決策)

ThinkPHP Most最初に実行されるのは、Think.class.php
の Think クラスです。これには、
spl_autoload_register('ThinkThink::autoload')
クラス ファイルを自動的にロードするメソッドを登録した後
ThinkPHP のクラスがロードされると、このメソッドが呼び出されてロードされるため、それについて心配する必要はありません。 ThinkPHP が最初に実行するのは、Think.class.php

内の Think クラスです。その中には

spl_autoload_register('ThinkThink::autoload');

クラス ファイルを自動的にロードするメソッドを登録した後
が含まれます。メモリにないクラスに遭遇した場合、このメソッドが呼び出されてロードされるため、心配する必要はありません


見つかりました。 。 。 TP フレームワークは非常に巧妙に設計されていると感じます。 。 。 。 。

モデレータは、thinkphp がどのようにして最初の実行を Think.class.php の Think クラスにするのかについて詳しく説明してもらえますか?



プロジェクト エントリは
ThinkPHP.php ファイルの最後の行は

<?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.// +----------------------------------------------------------------------// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )// +----------------------------------------------------------------------// | Author: liu21st <liu21st@gmail.com>// +----------------------------------------------------------------------// 应用入口文件// 检测PHP环境if(version_compare(PHP_VERSION,'5.3.0','<'))  die('require PHP > 5.3.0 !');// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为falsedefine('APP_DEBUG',True);// 定义应用目录define('APP_PATH','./Application/');// 引入ThinkPHP入口文件require './ThinkPHP/ThinkPHP.php';// 亲^_^ 后面不需要任何代码了 就是如此简单

このようにして、システム全体がアクティブ化されます
Think\Think::start();

プロジェクトの入り口は

ThinkPHP.php ファイルの最終行は

<?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved.// +----------------------------------------------------------------------// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )// +----------------------------------------------------------------------// | Author: liu21st <liu21st@gmail.com>// +----------------------------------------------------------------------// 应用入口文件// 检测PHP环境if(version_compare(PHP_VERSION,'5.3.0','<'))  die('require PHP > 5.3.0 !');// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为falsedefine('APP_DEBUG',True);// 定义应用目录define('APP_PATH','./Application/');// 引入ThinkPHP入口文件require './ThinkPHP/ThinkPHP.php';// 亲^_^ 后面不需要任何代码了 就是如此简单

このようにして、システム全体がアクティブ化されます
Think\Think::start();

O( ∩_∩)Oありがとうございます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。