儘管Twitter 的仇恨在此刻,我已經設置了創建一個新的基於Twitter的應用。 作為的人管理多個帳戶(包括個人和我的慈善工作),我一直需要一段時間,我剛剛周圍書面形式(在不久的將來有更多的...)的工具。
我讀了對Zend_Oauth_Consumer和如何它可以用來與Twitter交互使用OAuth的授權。 一切都很好,我有我的訪問鍵和歡快,我可以離開用戶的名義發表。 還有大量的資源有做到這一點,所以我不會孔人。
下一步是讓人們返回到該網站,登錄和修改自己的帳戶。 這是我達到了一個小問題。 在網站上使用的代碼示例的意思,我嘰嘰喳喳問我獲得授權再次為每個登錄,也不好。 掃描通過的框架,我看不到任何東西,這將使我只是請求驗證。 這並不是說其不存在,但似乎沒有,是一種身份驗證機制,可以調用已經不知道該訪問令牌。
替代方案是實現一個基於網站日誌,或以某種方式存儲在客戶端上(當然加密)用戶的訪問令牌。 這些都不似乎是一個很好的/合適的解決方案。
繼續閱讀“登錄”與Twitter使用Zend框架“»
總結
這是一個快速後討論我呈現在Zend框架風格的視圖文件,只有當它存在的相當簡單的視圖助手。 一般要求的代碼,以使文件不存在將拋出一個異常。 因此,我創建了一個在Zend_View包裝:: render()的方法,確定該文件是否存在,若有呈現,否則只是返回一個空字符串。
繼續閱讀'Zend框架:渲染如果存在'»
圖片從http://www.flickr.com/photos/daniello/
總結
我在這裡討論修改HTML標記創建一個視圖助手,更具體的body標籤。 創建視圖助手允許類似的頭* / inlineScript已經在標準視圖助手Zend Framework的視圖助手的功能,但允許編程修改標籤屬性。 肯定github上的演示頁面和代碼檢查。
動機
Zend框架標準視圖助手是一套精簡世俗的看法任務和醜陋的黑客不應用允許在視圖腳本和頭塊(一般在佈局中舉行)修改/添加一個工具(即頭* / inlineScript認為傭工)。
後際,我發現需要的<body>標籤進行修改,例如添加的onload ,類,或樣式屬性等我還需要能夠執行在其他視圖助手。 藉此以下的例子...
在X網站的某些網頁,包括標準的道場形式。 這些道場的形式在方便的視圖助手舉行。 一般來說,已決定不包括Dojo的CSS在body標籤類,只會增加他們在必要時。 有可能需要添加自己的屬性body標籤。頁面上的幾個視圖助手(我說那是做作)
代碼是在我的GIT倉庫@ github上和演示頁 。
繼續閱讀“Zend Framework的身體標籤視圖助手”»
依賴注入 (DI)的是什麼?
依賴注入是一種技術,它允許在一個軟件應用程序的鬆散耦合的對象。 一般來說,如果一個對象需要訪問的另一個功能,它會被實例化,國內領先的緊耦合的系統。 我們通過實現依賴注入注入所需的對象準備使用(有時也被稱為控制反轉 - 國際奧委會)。 看看下面的例子:
<?PHP
類決策者{
公共的功能makeDecision(數組$參數){
/ /需要的數據庫適配器
$ DP =新DecisionParameters();
美元parameterScore = $ DP-> getScore(參數);
/ * ... 一些更多的決策邏輯... * /
回報(美元parameterScore> 50);
}
} 這一段代碼表示,要緊密結合的DecisionParameters對象。 在鬆散耦合的方式重寫以上,我們就會有類似....
<?PHP類的決策者{私營美元_dp;公共功能_構造($ DP){$這個 - > _dp = $ DP;}公共功能makeDecision(數組$參數){$ parameterScore = $此 - > _dp-> getScore($參數); / * ... 一些更多的決策邏輯... * /回報($ parameterScore大於50);}} 雖然獲得鬆散耦合的代碼的好處,我們也有實例化它的依賴,並在太通過這些,我們增加了複雜性,每次一個對象被實例化。 例如:
$選擇=新的決策者();
呼應選擇> makeDecision(陣列('努力'=>'低','回報'=>'高'));
現在變成了:
$ DP =新DecisionParameters();
為選擇新的決策人(DP);
呼應選擇> makeDecision(陣列('努力'=>'低','回報'=>'高'));
一類的依賴關係的數量增加,這種情況變得更加痛苦,如果自己有依賴的依賴呢? 這可以很快成為一個對象管理的惡夢! 輸入的依賴注入容器(或框架)...
繼續閱讀“快速入門Symfony的DI(依賴注入)教程”»
在這篇文章中,我期待在使用Zend_Layout的一個簡單的前端控制器,顯示它是如何開始在您的應用程序的業務邏輯和表示分離和Zend_View。 所有的代碼是在github上:
Zend_Layout的裸體和Zend_View GitHub上 。
作為後續行動,我以前的帖子,每個模塊為基礎的佈局設置為Zend框架 ,我已經更新了代碼,要求比以前更少的配置(而不是它需要更多的,在您的應用程序配置了幾行!)。
繼續閱讀“每個模塊的佈局設置Zend框架-按照”»
這看似簡單,但我是撞我的頭,試圖創建一個URL在一個自定義的視圖助手Zend框架 。 我已經從子域所使用的模塊,所以我不能用一個簡單的硬編碼的URL路由設置。
繼續閱讀“創建自定義視圖助手在Zend的網址”»
在以直接請求為/ sitemap.xml的自定義控制器和Zend Framework的應用程序在您的行動,只是在您的application.ini或替代配置文件中添加以下內容(例如我使用navigation.ini):
resources.router.routes.sitemap.route =“sitemap.xml的”
resources.router.routes.sitemap.defaults.controller =索引
resources.router.routes.sitemap.defaults.action =網站地圖
可以看出,通過創建一個適當的控制器(如我的Sitemap索引中的控制器,地圖行動)的行動為輸出的示例代碼:
< PHP
類IndexController
擴展Zend_Controller_Action的
{
/ **
*呈現基於Zend_Navigation設置一個sitemap
* /
公共的功能sitemapAction()
{
呼應 - >查看 - >導航() - >地圖();
$ - >視圖 - >佈局() - > disableLayout();
$> _helper>的ViewRenderer> setNoRender(真);
}
}
網站地圖可以快速輕鬆地使用Zend的石膏 Zend_Navigation ,一個偉大的快速教程(一般Zend框架教程非常有用) - 動態創建菜單的地圖和麵包 。
我創建了一個後續到這個職位需要更少的配置,請參閱模塊佈局- Zend框架 。
當使用Zend框架的模塊,其明顯的,如果你運行了相同的應用程序的不同(分)網站,你不一定要相同的佈局腳本,每個部分。 我決定去下面的網站結構:
/應用
/控制器
...
/型號
/模塊
/默認
/控制器
/佈局
/腳本
/人次
/腳本
/ anotherModule
...
/腳本
這個問題是每一個模塊的基礎上設立的佈局腳本。 答案是通過使用一個動作助手。 每一個模塊的基礎上設立的佈局,包括三個步驟:
- 的的application.ini(或類似的配置設置):
admin.resources.layout.layoutPath = APPLICATION_PATH“/模塊/管理/佈局/腳本”
default.resources.layout.layoutPath = APPLICATION_PATH“/模塊/預設/佈局/腳本”
member.resources.layout.layoutPath = APPLICATION_PATH“/模塊/會員/佈局/腳本”
affiliate.resources.layout.layoutPath = APPLICATION_PATH“/模塊/子公司/佈局/腳本”
- 創建你的動作助手:
<?PHP
/ **
*每一個模塊的基礎上設置的佈局路徑
*
* @作者:勞埃德·沃特金斯<lloyd@evilprofessor.co.uk>
* @自2010-01-01
* /
類Pro_Controller_Action_Helper_SetLayoutPath
延伸Zend_Controller_Action_Helper_Abstract
{
/ **
*集佈局路徑的基礎模塊
* /
公共職能preDispatch()在
{
模塊=> getRequest() - > getModuleName();
如果(引導= $> getActionController()
- > getInvokeArg('引導')){
$ CONFIG = $引導 - > getOptions();
(使用isset($配置[$模塊] ['資源'] ['佈局'] ['LayoutPath的'])){
美元LayoutPath的=
$配置[模塊] ['資源'] ['佈局'] ['LayoutPath的'];
$> getActionController()
- >中調用getHelper(“佈局”)
- > setLayoutPath($ LayoutPath的);
}
}
}
} - 最後自舉的動作助手:
...
/ **
*每一個模塊的基礎上設置佈局腳本
* /
保護功能_initLayoutHelper()
{
$本 - >引導(“frontController);
美元佈局Zend_Controller_Action_HelperBroker :: addHelper(
新Pro_Controller_Action_Helper_SetLayoutPath());
}
...
最近,我的雇主支付了我們的開發小組採取了Zend框架:基礎課程,在這裡,我會總結我的想法和意見,對他人的過程中。 對於那些希望節省時間,這裡是我的總結:
還沒來得及看在Zend框架這當然對於開發(Zend框架:基本原理)提供了一個框架,向您介紹的重點領域,並給予足夠的信息,以便繼續良好的大局。 對於那些誰花時間框架,並已按照一個或兩個教程本課程不提供遠遠超出。
背景
我去過一個PHP為5-6年左右的開發,並已開始工作,與Zend框架的一個組成部分的基礎上,在過去的6個月。 我已經開發和/或1上幾個小Zend框架開發MVC的 sites.Â我會說實話,我已經沒有了大量接觸到其他框架,從一個角度編碼點,但已經花了數小時研究項目網站和評估them.Â框架和Zend框架周圍的社會,這是非常令人興奮,似乎有巨大的可能性,在其去。
關於課程
當然是交付超過兩個小時的WebEx會話(在中間休息10分鐘)。 花費的時間是通過一套由Zend提供了在任何時間進行討論的幻燈片。 您可以使用麥克風的教練談,但說實話,我沒有看到任何人使用任何聊天窗口多。 除了VMWare的Ubuntu機器提供了示例代碼和項目設置的Zend Studio試用版。 課程領導人會談與會者可以通過一個集成的VoIP解決方案,或者您可以撥打使用數字全球的許多撥號之一。
在課程材料組成的留言樣本應用程序的標題前的框架和MVC模式的簡要介紹。 討論表明,引導,Zend_Application,數據庫表,數據庫訪問,形式,過濾,ACL,驗證等,等,基本上涵蓋了所有的主題,你需要給你的工具,獲得了一個正在運行的所有的時間基本網站去獲得更多先進的框架中(雖然這確實金額,“看網站的大部分時間)。
給定的時間編寫了一些例子,並制定的“留言”和簡單的“維基”的應用。 我個人認為,提供的代碼或每個應用程序,然後要求我們發展基本上是一個副本,旁邊並沒有真正提供一個良好的學習經驗。 我寧願開發一個應用程序類似,但不完全相同。 例如應用有指導參考的利益。 或者建設從無到有,從示威者與應用,將可能導致更多的問題, 為什麼和怎樣 ,從而使一個更好的框架的理解,畢竟你可以看一下具體課程後,。
最後的演講,包括在教練的指導與幫助/ wiki應用工作。 課程結束後的反饋,它強調通過課程幾次,Zend的反饋非常重視,顯然其實我們的版本當然是相當新的。 一些在該公司的其他開發將採取過程很快,所以這將是有趣的,如果發生這種情況。
當然風格是非正式的,允許觀眾和教練之間的反饋和協作。 課程負責人很友好,平易近人(電子郵件地址共享問題),而從他的演講幻燈片有點不穩,似乎完全有能力在框架。 他很清楚的人用的人教教的課程,而不是定期的框架,我很喜歡“現實世界”在這方面的經驗。
總體感覺
在某些方面,我發現,當然是在浪費時間,在其他國家,這是非常方便。 希望我會得到我跨清楚的原因,可能提供一些食物,思想或有用的反饋(知道我這是不可能的!)。
本課程旨在為自己水平太低。 經過快速入門指南不見了,讀羅布·艾倫的Zend框架的行動中,一點點,我也沒有真正得到什麼太多的框架工作。 我喜歡的課程撿起快速入門和開發更多的技能。
中說,課程名稱並註明“Zend框架: 基本原理 ”,並在這方面的課程達到什麼做。 沒有尋找到框架中所花費的時間開發團隊的其他成員的熱情完成每屆會議提出的問題,這是非常好的看到。
並沒有失去一切,這是很好的,花時間確認該框架的基本細節,問我是不是100%的地區問題的夫婦。 這也是時間,我坐下來的每一天,想想編碼使用的框架和未來的項目,東西我不會已經能夠做到,否則(貴公司同意了,你能想像嗎?:))。 最後但並非最不重要的,你也得到了很好的證書說,你參加的課程(儘管通過電子郵件)從Zend。
Zend Framework的認證
這是一個問題,不斷介意在課程期間,將準備我的認證? 快速,容易的是一個響亮的回答:“ 不 。 課程導師是很清楚其他意見,認證,你應該使用的框架上的每一天,感覺很舒服,它的用法和方法有信心。
總結
鑑於我上面寫的一切,我總結了兩個簡單的要點的一切:
- 新的Zend框架:本課程不正是你所期望的,它給你一個很好的框架和基礎,從中可以建立良好的接地介紹。 當然似乎在開發中的框架,以產生興趣和熱情。
- 使用Zend框架:雖然它是很好的支撐一些非常基本的,我覺得時間,精力和資金,當然可以更好地用在別處。 SEEA的Zend創建一個新的更高的水平當然要開發一個新的水平-這將是很好的。至少認證和超出標準, 為此,我會馬上註冊。