內容物是奇異果,外皮是棗子的新奇水果團購9顆116元,真不便宜
被遺忘的瞇瞇
好的事情,我怕忘記,所以我記錄。 壞的事情,我要記取教訓,所以我記錄。 平凡的事情,會有深刻的體會。所以我記錄。
zf動態Layout
bootstrap.php 新增pluginClass處理動態Layout
<?php class Bootstrap extends Zend_Application_Bootstrap_Bootstrap |
自訂動態Layout Class,預設導到portal.phtml,其他by module切割
<?php |
ZF套用library規則
Naming Rule決定位置
class Zend_Db_Table_Abstract 置放於:library\Zend\Db\Table\Abstract.php
Application.ini要適當調整來自動載入library
[production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" appnamespace = "Application" resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" resources.frontController.params.displayExceptions = 0 resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/" autoloadernamespaces.util = "Util_" // 新增自動載入的Library Util [staging : production] |
自訂Class測試,置放於Library/Util/SessionHelper.php:
<?php class Util_SessionHelper // 在Library的Util目錄下建立SessionHelper.php { public function getLongonId(){ return "sheauren"; } } ?> |
使用方式:
<?php $SessionHelper=new Util_SessionHelper(); echo $SessionHelper->getLongonId(); ?> |
ZF目錄說明
- quickstart (專案名稱產生的目錄)
- |-- application (App位置)
- | |-- Bootstrap.php
- | |-- configs (設定檔)
- | | `-- application.ini
- | |-- controllers
- | | |-- ErrorController.php
- | | `-- IndexController.php
- | |-- models (模組化分類,底下會有自己的Controllers/Modules/Views)
- | `-- views
- | |-- helpers
- | `-- scripts
- | |-- error
- | | `-- error.phtml
- | `-- index
- | `-- index.phtml
- |-- library (第三方函式庫、自製函式庫,預設zend library也是放這)
- |-- public (公開資料位置,網站Root)
- | |-- .htaccess
- | `-- index.php
- `-- tests (測試資料,PHPUnit)
- |-- application
- | `-- bootstrap.php
- |-- library
- | `-- bootstrap.php
- `-- phpunit.xml
zf 常用command整理
建立專案:
zf create project projectName
執行後會產生整個專案所需的目錄
啟用Layout功能(套用樣板):
zf enable layout
產生Application/Layouts目錄,並且產生基本樣板檔案layouts/scripts/layout.phtml
新增Module:
zf module moduleName
執行後會於Application下產生該Module的目錄
新增Module's Controller:
zf create controller controlName moduleName
執行後會於該Module下產生該Controller檔案
新增Control's View:
zf create view viewName controlName moduleName
執行後會於該Controller下對映之View目錄產生該View檔案
新增Control's Action:
zf create action actionName controlName moduleName
執行後會於該Controller下產生該Action
新增Model:
zf create model modelName moduleName
執行後於該Module目錄下產生該Model檔案
資料庫設定:
zf configure db-adapter "adapter=PDO_MYSQL&host=localhost&username=root&password=pwd&dbname=projectName&charset=utf8" development;
於系統設定檔設定此資料庫連線
新增DbTable:
zf create db-table modelName tableName
於Model中新增此tableName的class
zf create db-table modelName tableName force-overwrite
強制覆蓋方式建立
產生整個DB的DbTable語法如下:
zf create db-table.from-database
如果發生錯誤:
Fatal error: Cannot redeclare class Zend_Loader in C:\Program Files\Zend\Apache2
\htdocs\AMIS\library\Zend\Loader.php on line 31
請將application.ini的includePaths.library = APPLICATION_PATH "/../library"用分號註解掉就會正常
將zf project放於Directory下,不另外設定VirtualHost
- Project置放於Apache htdocs下
- 於Project下新增檔案:.htaccess
該檔案結構如下:
RewriteEngine on RewriteRule (.*) ./public/$1 |
- http.conf的Directory改成下面設定:
<Directory "C:\Program Files\Zend\Apache2/htdocs"> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> |
- 重新啟動Apache
設定VirtualHost給zf project
- 於httpd.conf定義新的VirtualHost - 直接當Root時
- 定義新的Port記得需要額外Listen該Port
<VirtualHost *:81>
ServerName localhost
DocumentRoot "C:\Program Files\Zend\Apache2\htdocs\ProjectName\public"
SetEnv APPLICATION_ENV "development"
<Directory "C:\Program Files\Zend\Apache2\htdocs\ProjectName\public">
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Listen 81
- 設定好記得重新啟動apache
XP安裝ZendServer-CE
- XP現在都有的安裝警告
- Installation讀取畫面
- 這次安裝版本是Zend Server Community Edition 5.6
- License Agreement
- 安裝類型,我習慣用Custom看一下大致裝了什麼
- 第一次可以不調整安裝內容,如果需要加裝phpMyAdmin/MySQL Server也可以勾起來,不過我個人建議沒友直接聯繫的情況,分開裝比較單純
- Zend Server安裝之Web Server挑選,這邊我選擇Install an Apache 2.2.22 Web Server,它同時幫我們裝Apache Httpd Server
- 預設80 Port已經被IIS搶走了,所以我把Web Server Port改成8080,不過後面的Occupied還是持續顯示沒有立即更新
- 列入此次要安裝的清單
- 持續安裝
- 安裝完成,預設直接啟動Zend Server
- 此時右下角常駐圖示會多兩個圖示,分別代表: Zend Server、 Apache Server
- 很不幸的預設執行的Zend Server是掛點的
- 查看Apache Error.log
- Error.log顯示 Zend Enabler沒辦法讀取,XML Parse錯誤
- 於Zend Server/Etc目錄下檢查ZendEnablerConf.xml檔
- 用Notepad++開啟後,編碼有錯誤的問題
- 直接將第一行砍掉,另存成UTF-8編碼
- 重新執行Apache
- 重新執行Zend Server
- 終於看到正常的Zend Server第一次執行畫面
- 設定Server password
- 初次設定完畢
- 平常Zend Server畫面
- 測試command功能,執行cmd
- 於Command模式下,執行zf
- 出現zf指令提示,大功告成!
最簡單安裝方式,抓CE Server(社群版),如:ZendServer-CE-php-5.3.14-5.6.0-SP2-Windows_x86.exe,下載該執行執行執行就好,不過個人推薦它可以選擇裝在IIS上面或Apahce上面,建議用Apache,畢竟通通用Opensource的東西比較好整合,M$的還是自家整合比較單純。