为了代码清晰起见,我想知道是否可以让 PHP 中的对象在定义时执行函数或块,以使事情更像 Java。
不是通过 实例化它__construct()
,而是像main()
在 Java 中那样定义它。PHP 是否与main()
Java 中的等价物?
对于在 OO PHP 中编写整个项目的经验的人:您如何决定哪些代码应该和不应该包含在对象中?
为了代码清晰起见,我想知道是否可以让 PHP 中的对象在定义时执行函数或块,以使事情更像 Java。
不是通过 实例化它__construct()
,而是像main()
在 Java 中那样定义它。PHP 是否与main()
Java 中的等价物?
对于在 OO PHP 中编写整个项目的经验的人:您如何决定哪些代码应该和不应该包含在对象中?
对象中应该包含什么代码?嗯,这是一个非常开放的问题:这取决于。
对于小型项目,您可以按程序进行所有操作。但是 OO 确实为大型项目提供了一些好处,例如封装(仅根据需要授予外部方法/属性访问权限,并从其他不相关的部分隐藏一个部分的机制)和继承(非常有助于解决一般情况,然后缩小范围满足您的要求,同时保持代码井井有条)。
对于大型 Web 项目,尤其是那些使用现代 PHP 框架的项目,我想说 80% 的代码可以是 OO 的——视图层中的控制器和代码片段除外。但是某些系统(例如 Wordpress)强制采用更程序化的样式,因此您的 OO 可能只占您代码的 30%(我在 OO 中进行 WP 插件开发,但据我所知,这种方法很不寻常)。
要了解更多信息,您可能会发现选择一个 PHP 框架(Symfony、Zend、Cake 等)并运行他们的教程很有帮助。与抽象学习相比,你将学到更多的东西,imo。
如果你真的想要,你可以创建一个“main”函数,然后调用它:
function main(){
$obj1 = new Obj1();
doSomething();
//etc...
}
main();
如果我正确理解了你的问题...
您要问的不是面向对象的问题。Java 和类似语言中的 main() 是一种框架特性,而不是 OO 特性。所有 main() 定义的都是应用程序的入口点,这是您无论如何都要做的事情。
所以简短的回答是,这无关紧要。更长的答案是,如果你想要那种执行顺序,你可以在 PHP 中寻找一个特定的框架。
您将在堆栈跟踪中看到 main 。它只是您的应用程序的入口点。通常是调用解析器的第一个文件的第一行(或零行)。