由於項目需要用到Zend Framework框架,所以現在開始深入學習這個框架。第一課總是,輸出Hello World。
配置Zend Framework運行的PHP環境
首先確認你的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了。
配置Zend Framework項目
項目文件夾如下:
下面介紹下需要修改的文件名與其代碼。
.htaccess代碼:
RewriteEngine on
RewriteRule .* index.php
php_flag magic_quotes_gpc off
php_flag register_globals off
php_flag short_open_tag on
index.php(網站入口)文件及說明:
<?php
/*
* Date: 2010.11.19
* Author:Gonn By www.nowamagic.net
* Email:[email protected]
* QQ:252211974
* Blog:http://www.nowamagic.net
*/
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; ?><!-- 這裏輸出控制器裏Action傳過來的值:hello world -->
在瀏覽器輸入: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了!