我在理解組件,實用程序和行爲之間的差異時遇到了問題。 我看了食譜,但它只幫助了我一部分。組織CakePHP代碼
例如 - 我想在上傳時調整大小/裁切圖像。 我將使用與不同模型和控制器/操作相關的多種不同形式。
很顯然,我需要寫一個類規模,調整,saveImage和其他有用的方法。 我也需要能夠在不同的地方使用這種方法。
我的問題是 - 哪裏是正確的地方放這段代碼?有人能提供一些關於組件,效用和行爲之間核心差異的簡單例子嗎?因爲對我來說組件和實用程序看起來非常相似
我在理解組件,實用程序和行爲之間的差異時遇到了問題。 我看了食譜,但它只幫助了我一部分。組織CakePHP代碼
例如 - 我想在上傳時調整大小/裁切圖像。 我將使用與不同模型和控制器/操作相關的多種不同形式。
很顯然,我需要寫一個類規模,調整,saveImage和其他有用的方法。 我也需要能夠在不同的地方使用這種方法。
我的問題是 - 哪裏是正確的地方放這段代碼?有人能提供一些關於組件,效用和行爲之間核心差異的簡單例子嗎?因爲對我來說組件和實用程序看起來非常相似
實用程序和行爲/組件之間的主要區別是:實用工具類不會延長核心MVC類,因而不會自動接收鉤到他們的父類的請求週期。例如,在組件中,您可以實現一個beforeRender()
函數,該函數在控制器每次調用控制器時自動地呈現其佈局/視圖之前會被調用。
此外,實用程序類必須實例化並在使用前分配給變量:$myUtil = new MyUtility(); $myUtil->blah()
- 行爲/組件/幫助程序在加載到類中時可以實例化,並且可以用$this->MyComponent->blah()
引用。
就你而言,圖像處理邏輯很可能屬於Component或Utility類,你可以選擇實現它。就個人而言,我會去寫一個Component,因爲你不太可能利用控制器之外的圖像處理邏輯。
編輯:您還可以考慮查找和使用已經有人寫了一個現有的組件,例如我發現ImageTool,Image Resizer,Image Upload & Resizer和Thumbnail在約2分鐘的谷歌搜索。
行爲的地方,你把那應該跨多個模型中重用代碼 組件都放在什麼地方的代碼,將跨越多個控制器 和助手,在那裏你把代碼中,將跨越多個視圖
使用這是基本的崩潰。
由於控制器負責應用程序邏輯,因此您最好將您的上傳器/縮放器構建到組件中。
如果需要修改數據如何被訪問,或從數據庫中返回,這將是一個行爲(因爲它影響的模型層)
如果你需要創建生成HTML或一些一些可重用的代碼類型的視圖輸出,這將是一個幫手。
用於上傳,縮放和調整圖像大小的示例。我會把它變成一個組件。例如,我有一個名爲UploadComponent.php的組件,用於上傳,保存並創建縮略圖圖像。
我做這個組件添加到我的控制器:
var components = array('Upload');
,然後我可以通過以下操作使用它在我的控制器:你如何實現你的組件
$this->Upload->createThumbnail(200, 200);
細節顯然,取決於你。
希望有所幫助。
是的,謝謝! – Derp
我會看看這些組件。但首先我想了解它是如何工作的,並學習如何創建類似的功能。 :)你的回答非常有幫助,謝謝! – Derp