2

为了代码清晰起见,我想知道是否可以让 PHP 中的对象在定义时执行函数或块,以使事情更像 Java。

不是通过 实例化它__construct(),而是像main()在 Java 中那样定义它。PHP 是否与main()Java 中的等价物?

对于在 OO PHP 中编写整个项目的经验的人:您如何决定哪些代码应该和不应该包含在对象中?

4

4 回答 4

2

对象中应该包含什么代码?嗯,这是一个非常开放的问题:这取决于。

对于小型项目,您可以按程序进行所有操作。但是 OO 确实为大型项目提供了一些好处,例如封装(仅根据需要授予外部方法/属性访问权限,并从其他不相关的部分隐藏一个部分的机制)和继承(非常有助于解决一般情况,然后缩小范围满足您的要求,同时保持代码井井有条)。

对于大型 Web 项目,尤其是那些使用现代 PHP 框架的项目,我想说 80% 的代码可以是 OO 的——视图层中的控制器和代码片段除外。但是某些系统(例如 Wordpress)强制采用更程序化的样式,因此您的 OO 可能只占您代码的 30%(我在 OO 中进行 WP 插件开发,但据我所知,这种方法很不寻常)。

要了解更多信息,您可能会发现选择一个 PHP 框架(Symfony、Zend、Cake 等)并运行他们的教程很有帮助。与抽象学习相比,你将学到更多的东西,imo。

于 2012-12-27T14:07:22.807 回答
1

如果你真的想要,你可以创建一个“main”函数,然后调用它:

function main(){

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

}

main();

如果我正确理解了你的问题...

于 2012-12-27T14:00:39.910 回答
1

您要问的不是面向对象的问题。Java 和类似语言中的 main() 是一种框架特性,而不是 OO 特性。所有 main() 定义的都是应用程序的入口点,这是您无论如何都要做的事情。

所以简短的回答是,这无关紧要。更长的答案是,如果你想要那种执行顺序,你可以在 PHP 中寻找一个特定的框架。

于 2012-12-27T14:00:47.803 回答
0

您将在堆栈跟踪中看到 main 。它只是您的应用程序的入口点。通常是调用解析器的第一个文件的第一行(或零行)。

在此处输入图像描述

于 2012-12-27T14:06:12.233 回答