2017-01-20 30 views
1

我想讓我的項目變得如此靈活,以至於只需將它們複製粘貼到對方即可。未知項目級別的自動加載器

我的項目結構是ProjectName /(bin,config,lib)。

複製粘貼後我會有一個像ProjectName1/lib/ProjectName2/lib/ProjectName3 /的鏈。

現在,如果自動加載器根據文件被調用的級別搜索文件,那將會很棒。

例如,如果ProjectName1/lib/ProjectName2/lib /中的類調用「new Config」,它應接收位於ProjectName1/lib/ProjectName2/config/config.php中的配置文件。

(但不是ProjectName1/config/config.php中的那個,也不是ProjectName1/lib/ProjectName2/lib/ProjectName3/config/config.php中的on)。

有沒有辦法做到這一點?

編輯: 使文件獨特有意義嗎?例如:如果'config.php'是'ProjectName2Config.php',那麼幾乎沒有衝突的可能性。所以自動加載器可以搜索到任何地方,並最終找到它的文件。

編輯: 每個項目將有自己的自動加載器可用於複製+粘貼的原因。但是我認爲我只會加載ProjectName1。將它們全部加載以便每個人都可以保持簡單更好嗎?

乾杯, 彼得

PS:我剛從3年的編程破發。我也很高興,如果你告訴我,以上是一個不好的主意,並給我爲什麼:-)

+0

只需編寫一個php函數,並將其註冊爲自動加載器 - 只需使用它即可。不利的一面是編碼工具很難找到正確的類,如果結構變得十分混亂,你也可能會遇到困難。 (http://php.net/manual/en/function.spl-autoload-register.php) –

回答

0

我認爲這是一個奇怪的方式來管理您的項目。 哪裏會是Project1的主腳本和Project2的主腳本?

例如,我做的是我寫這在我的index.php或主體工程/ lib目錄包含文件:

<?php define('ROOT_PATH', dirname(__FILE__) . '/'); ?> 

而且我一直用這個ROOT_PATH作爲包含路徑的開始。

在你的情況PROJECT1 ROOT_PATH會是這樣的 「的/ var/WWW/PROJECT1 /」 和Project2的ROOT_PATH將是 「/無功/網絡/ PROJECT1/lib中/ Project2的/」

因此,一個新的PROJECT1配置並在Project2中使用他們自己的config.php文件。

+0

謝謝。這聽起來不錯,只要我不退縮。但是說我有: Project1開始... $ project2 = new Project2; $ someValue = $ project2-> getSomeThing(); Project1繼續.... new SomeThingFromProject1(); 在這種情況下ROOT_PATH將取自Project2,對吧? –

+0

回答你的問題:我打算使用Project2中的其他編輯中的示例:如果我在Project1上工作,並且可能需要Project2中的某些東西,我寧願包括整個項目,而不是複製我需要的部分。我希望這可以更容易地管理,即最終更新Project2時。也許我應該使用「包」而不是「項目」這個詞。 –

+0

在「包」或「模塊」的情況下,我明白了。然後我會有一個包含它的庫,模塊/包(和其他東西)的項目。每個模塊/軟件包都有它自己的配置,視圖,控制器,sqls或其他,並且是獨立的。 – zenko