2013-06-21 175 views
1

我創建了自己的mvc模型,因此我必須包含我所有的模型和控制器類。在mvc模型中包含文件php

眼下每個我需要在控制器我使用一個模型時間:

require_once('myModel.php'); 

有點像Java中

進口,但我有一個問題,它是一個很好的解決方案,以繼續這條路 ? 我希望在代碼的開始部分包含所有模型和控制器,但恐怕這個解決方案太重了。

謝謝

+0

爲什麼不使用CakePHP,codeignator,Laravel等MVC框架。爲什麼你想不必要地包含所有模型。 –

+0

@AmarBanerjee,你真的看過你提到的框架是如何實現自動加載的嗎? [Cake](https://github.com/cakephp/cakephp/blob/master/lib/Cake/Core/App.php#L534),[CI](https://github.com/EllisLab/CodeIgniter/blob /develop/system/core/Loader.php)和[Laravel](https://github.com/laravel/framework/blob/master/src/Illuminate/Support/ClassLoader.php)。即使對laravel的攻擊性不大,也只是一堆封裝在命名空間中的靜態函數(它看起來像一個類)。那些代碼是可怕的。你不應該推薦他們去新手。 –

回答

3

通常我不會推薦你創建你自己的框架,但是如果你堅持或想爲學習目的而做,PHP社區創建FIG(Framework Interop Group)來維護框架之間的一致性,以及應該如何處理。

您試圖解決的問題稱爲自動加載,它也記錄爲AS PSR-0標準,https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md,有一個很好的閱讀。

這裏是PSR-0標準的自動加載的例子:PHP - most lightweight psr-0 compliant autoloader

基本上就意味着你namescape路徑會告訴到哪裏尋找文件。

例如你想在bootstrap.php中獲得BussinessObject:

//MVC/Models/BussinessObject.php 

namespace MVC/Models; 

class BussinessObject { 

} 

//MVC/bootstrap.php 

namespace MVC; 

use MVC/Models/BussinessObject; 

$BussinessObject = new BussinessObject() 

然後自動加載磁帶機將查找在MVC /模型/ BussinessObject.php文件,通話需要使用該路徑。

+0

感謝您的回答,我嘗試了Symfony2,但我並不真實,我可能會測試zend,你有框架消化嗎? – Ajouve

+0

這取決於您的需求,想要一些像Silex這樣的微型框架。我對Symphony非常滿意,我會試一試Laravel 4看起來不錯的框架,Zend 2與1相比也更好,但是學習它需要時間。 –

+0

感謝您的回答 – Ajouve

0

最好的方法應該是隻在真正需要文件時才包含文件。 由於這不經常實用,因此您應該嘗試在應用程序init中僅包含包含您使用的基本功能的文件。