2012-12-27 37 views
2

爲了使代碼更加清晰,我想知道是否有可能讓PHP中的對象在定義時執行一個函數或塊,以使事情更像Java。PHP OOP是否與Java中的main()等效?

不像它正在通過__construct()實例化,而是因爲它被定義爲像Java中的main()。 PHP中是否有與Java中的main()等效的內容?

對於在OO中編寫整個項目有經驗的人PHP:你如何確定哪些代碼應該被包含在對象中?

+1

什麼?你能更好地闡述你在說什麼嗎? – Neal

+3

不,它沒有。 PHP從文件的開頭到結尾執行查找語句時執行語句。相當於定義一個類,將'main()'代碼放在構造函數中,然後在末尾添加'new MyClass()'。 – halfer

+0

main和__construct有什麼共同點?是絕對沒有.. – dbf

回答

2

應該在對象的代碼是什麼?那麼,這是一個相當開放的問題:這取決於。

對於小型項目,您可以按照程序進行操作。但OO確實爲大型項目帶來了一些好處,例如封裝(僅根據需要授予外部方法/屬性訪問權限,並隱藏其他不相關部分的一個部分的結構)和繼承(非常適合幫助解決一般情況然後縮小到您的要求,同時保持代碼組織良好)。

對於大型Web項目,尤其是那些使用現代PHP框架的項目,我會說80%的代碼可以是OO--除了控制器和視圖層代碼片段之外。但是一些系統(比如Wordpress)強制使用更多的過程風格,所以你的面向對象可能只有你的代碼的30%(我使用面向對象的方式開發WP插件,但從我所知道的方法來看,這種方法並不常見)。

要了解更多信息,您可能會發現選擇PHP框架(Symfony,Zend,Cake等)並運行他們的教程很有幫助。通過,你會學到更多的東西,而不是通過抽象的學習imo。

+0

複選標記也是對我的原始問題的評論中halfer的回答。 – ch7527

+0

謝謝@ ch7527,很高興幫助。 – halfer

1

如果你真的想你可以做一個「主」功能,然後叫它:

function main(){ 

    $obj1 = new Obj1(); 
    doSomething(); 
    //etc... 

} 

main(); 

,如果我理解正確你的問題......

1

你所問的是不是一個OO問題。 Java和類似語言中的main()是框架功能,而不是OO。所有的main()定義都是應用程序的入口點,這是你正在做的事情。

所以簡短的回答是,這是無關緊要的。更長的答案是,如果你想要這種執行順序,你可以在PHP中尋找一個特定的框架。

0

你會在堆棧軌跡中看到main。這只是您應用程序的入口點。通常是調用解析器的第一個文件的第一行(或第零行)。

enter image description here

相關問題