爲了使代碼更加清晰,我想知道是否有可能讓PHP中的對象在定義時執行一個函數或塊,以使事情更像Java。PHP OOP是否與Java中的main()等效?
不像它正在通過__construct()
實例化,而是因爲它被定義爲像Java中的main()
。 PHP中是否有與Java中的main()
等效的內容?
對於在OO中編寫整個項目有經驗的人PHP:你如何確定哪些代碼應該被包含在對象中?
爲了使代碼更加清晰,我想知道是否有可能讓PHP中的對象在定義時執行一個函數或塊,以使事情更像Java。PHP OOP是否與Java中的main()等效?
不像它正在通過__construct()
實例化,而是因爲它被定義爲像Java中的main()
。 PHP中是否有與Java中的main()
等效的內容?
對於在OO中編寫整個項目有經驗的人PHP:你如何確定哪些代碼應該被包含在對象中?
應該在對象的代碼是什麼?那麼,這是一個相當開放的問題:這取決於。
對於小型項目,您可以按照程序進行操作。但OO確實爲大型項目帶來了一些好處,例如封裝(僅根據需要授予外部方法/屬性訪問權限,並隱藏其他不相關部分的一個部分的結構)和繼承(非常適合幫助解決一般情況然後縮小到您的要求,同時保持代碼組織良好)。
對於大型Web項目,尤其是那些使用現代PHP框架的項目,我會說80%的代碼可以是OO--除了控制器和視圖層代碼片段之外。但是一些系統(比如Wordpress)強制使用更多的過程風格,所以你的面向對象可能只有你的代碼的30%(我使用面向對象的方式開發WP插件,但從我所知道的方法來看,這種方法並不常見)。
要了解更多信息,您可能會發現選擇PHP框架(Symfony,Zend,Cake等)並運行他們的教程很有幫助。通過做,你會學到更多的東西,而不是通過抽象的學習imo。
如果你真的想你可以做一個「主」功能,然後叫它:
function main(){
$obj1 = new Obj1();
doSomething();
//etc...
}
main();
,如果我理解正確你的問題......
你所問的是不是一個OO問題。 Java和類似語言中的main()是框架功能,而不是OO。所有的main()定義都是應用程序的入口點,這是你正在做的事情。
所以簡短的回答是,這是無關緊要的。更長的答案是,如果你想要這種執行順序,你可以在PHP中尋找一個特定的框架。
你會在堆棧軌跡中看到main。這只是您應用程序的入口點。通常是調用解析器的第一個文件的第一行(或第零行)。
什麼?你能更好地闡述你在說什麼嗎? – Neal
不,它沒有。 PHP從文件的開頭到結尾執行查找語句時執行語句。相當於定義一個類,將'main()'代碼放在構造函數中,然後在末尾添加'new MyClass()'。 – halfer
main和__construct有什麼共同點?是絕對沒有.. – dbf