由於項目需要用到Zend Framework框架,所以現在開始深入學習這個框架。第一課總是,輸出Hello World。
首先確認你的PHP環境,Zend Framework 要求 PHP版本不低於5.1.4,但強烈建議使用 5.2.3 或更高版本,因為在這兩個版本之間有許多重大安全和性能方面的改善和提高。
PHP環境配置好了之後,請打開php.ini文件,確認PDO擴展是否打開。如果沒有請把extension=php_pdo.dll之前的;號給去掉。
打開APACHE文件夾裡面的httpd.conf文件,查找到apache的mod_rewrite模塊,確認LoadModule rewrite_module modules/mod_rewrite.so是否打開。如果沒有請去掉它前面的#號。
查找到httpd.conf文件,如果AllowOverride為None的話,請一定把None都改成all,這樣你寫.htaccess這樣的文件才會起到作用。
重新啟動你的APACHE服務器,這樣我們的PHP環境就可以運用Zend Framewrok了。
項目文件夾如下:
下面介紹下需要修改的文件名與其代碼。
index.php(網站入口)文件及說明:
<?php /* * Date: 2010.11.19 * Author:Gonn By www.bkjia.com * Email:[email protected] * QQ:252211974 * Blog:http://www.bkjia.com */ error_reporting(E_ALL|E_STRICT); date_default_timezone_set('Asia/Shanghai'); set_include_path('.' .PATH_SEPARATOR .'./library'.PATH_SEPARATOR .'./application/models/'.PATH_SEPARATOR . get_include_path()); //require_once 'Zend/Loader.php'; //Zend_Loader::registerAutoload(); //設置Zend Framework 自動載入類文件 require_once "Zend/Loader/Autoloader.php"; Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true); $registry = Zend_Registry::getInstance(); $view = new Zend_View(); $view->setScriptPath('./application/views/scripts/'); //設置模板顯示路徑 $registry['view'] = $view; //注冊View //設置控制器 $frontController =Zend_Controller_Front::getInstance(); $frontController->setBaseUrl('/zendframework') //設置基本路徑 ->setParam('noViewRenderer', true) ->setControllerDirectory('./application/controllers') ->throwExceptions(true) ->dispatch(); ?>
IndexController.php文件及說明:
<?php class IndexController extends Zend_Controller_Action { function init() { $this->registry = Zend_Registry::getInstance(); $this->view = $this->registry['view']; $this->view->baseUrl = $this->_request->getBaseUrl(); } /* * 輸出Hello World 的Action(動作)! */ function indexAction() { //這裡給變量賦值,在index.phtml模板裡顯示 $this->view->bodyTitle = '<h1>Hello World!</h1>'; echo $this->view->render('index.phtml');//顯示模版 } } ?>
index.phtml模板文件說明:
<?=$this->bodyTitle; ?>
在浏覽器輸入:http://localhost/zendframework/,即可輸出Hello World。
PS:關於錯誤提示Zend_Loader::Zend_Loader::registerAutoload is deprecated as of 1.8.0 and will be removed with 2.0.0; use Zend_Loader_Autoloader instead
從1.8.0版本開始不推薦使用Zend_Loader::autoload,Zend_Loader::autoload會在2.0.0版本中移除,推薦使用Zend_Loader_Autoloader來替代Zend_Loader::autoload.
如果將
require_once('Zend/Loader.php'); Zend_Loader::registerAutoload();
改成
require_once 'Zend/Loader/Autoloader.php'; Zend_Loader_Autoloader::getInstance();
會提示Fatal error: Class 'Templater' not found in /var/www/phpweb20/htdocs/index.php on line 35
我想應該是加載類失敗吧,因為路徑裡面明明就有'Templater'類,那問題應該還是出現在Zend_Loader_Autoloader中。
只要改為
require_once "Zend/Loader/Autoloader.php"; Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true);
就OK了!