这可能看起来像一个愚蠢的问题,但是,在同一个文件中初始化类或调用它的一个函数是一个好的做法吗?我的意思是像这样:
<?php
class MyClass {
public function __construct($param) {
}
public static function MyFunction() {
}
}
$Obj = new MyClass('hello');
MyClass::MyFunction();
?>
这工作得很好,但我很好奇,如果这是一个好的做法,从功能和可访问性的角度来看。
不,这不是好的做法。PSR甚至将此写入了第三点:
文件应该声明符号(类,函数,常量等)或引起副作用(例如生成输出,更改。ini设置等),但不应该两者都做。
创建变量、类实例和调用代码是"副作用"。如果您从不同的位置多次包含该文件,或者只是在当前作用域中隐式地创建一个变量,而没有任何方法可以避免这种情况,则会导致问题。
这不是一个好方法,最好在合适的名称空间中在自己的文件中定义类,并更好地使用自动加载加载类。阅读自动加载和编写器,这是一个更干净的方式来组织你的项目。
No。:)
如果你想使用基于类的继承,你应该坚持使用单独的文件来定义类的编码标准。您应该有一个MyClass.php文件,该文件只声明类而不声明其他任何内容。将此文件包含在另一个php脚本中,并在其中实例化该类。
然而:你现在写它的方式是,如果你对类不感兴趣,只对一个对象感兴趣。为什么使用基于类的继承而不是原型继承?在原型继承中,你声明一个通用对象并用属性和方法"装扮"它:
$Obj = (object)[ 'property' => 'value'];
$Obj->method = function() { ... };