Luc*_*emy 0 php oop class include
我有以下内容:
include 'firstclass.php';
include 'secondclass.php';
Run Code Online (Sandbox Code Playgroud)
firstclass.php:
class First {
public static function foo() {
Second::bar();
}
public static function oof() {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
secondclass.php:
class Second {
public static function bar() {
First::oof();
}
}
Run Code Online (Sandbox Code Playgroud)
可以看出,我需要从中访问Second类的方法,First反之亦然.
如何将两者都包含在一起,以便可以从彼此的类中访问它们?
您有两种选择:
将它们放在同一个文件中
最简单的最快修复方法是将两个类放在同一个文件中.PHP在执行之前解析整个文件,因此这些类将能够使用彼此的方法.这将有效,但更专业和可扩展的解决方案是另一种选择.
使用自动加载
PHP允许您在调用未知类时向其提供有关查看位置的说明.这称为自动加载(简介).
拥有一个在所有脚本之前运行的初始化脚本.这是最容易通过设置实现auto_prepend_file=/path/to/init.php的php.ini(详细信息).设置完这样的脚本后,可以向其添加自动加载指令
//function called whenever you use an unknown class. It will
//be passed the name of your class
function my_autoloader($class) {
include __DIR__ .'/classes/' . $class . '.class.php';
}
spl_autoload_register('my_autoloader');
Run Code Online (Sandbox Code Playgroud)
如果您的类位于classes子目录中init.php并使用扩展名,则上述代码将起作用.class.php.因此,为了使它适用于您的示例,您的目录结构将需要
init.php
classes/
First.class.php
Second.class.php
Run Code Online (Sandbox Code Playgroud)
根据需要调整自动装带器.