我应该包含/ require_once我在PHP中扩展的父类吗?在PHP中扩展父类是否需要包含该类的文件?
例如我曾称为类形状
class Shapes {
}
然后,我创建了一个名为
require_once('shapes.php');
class Circle extends Shapes {
}
如果我需要的时候,我扩展父类的子类?或者应该只是使用将子类扩展到它的父类,即使它们在同一个文件夹中?
我应该包含/ require_once我在PHP中扩展的父类吗?在PHP中扩展父类是否需要包含该类的文件?
例如我曾称为类形状
class Shapes {
}
然后,我创建了一个名为
require_once('shapes.php');
class Circle extends Shapes {
}
如果我需要的时候,我扩展父类的子类?或者应该只是使用将子类扩展到它的父类,即使它们在同一个文件夹中?
您需要做某事为了让PHP在处理子类之前看到您的基类定义,否则会发生致命错误。
这个东西可以是基类文件的手册require_once
或autoloading(还有其他选项用于自动加载,但spl_autoload_register
是您应该使用的选项)。
该方法的使用取决于范围:编码一个小的测试项目设置自动加载的时候可能是矫枉过正。但是,随着代码库变大,自动加载变得更有吸引力,因为:
是的,你有和平共存的独立的自动加载磁带机如果该类未在同一文件中声明,则将其包含在内。
也有一个叫做Autoloading Classes功能,使用它可以创建这样一个功能:
function __autoload($class){
require_once('classes/' . $class . '.php');
}
,它会自动包括未在现有范围内发现
而且你班可以读到这个功能太:autoload_register
您还可以使用作曲家简化程序。
让composer.json
像https://getcomposer.org/这
{
...
"autoload": {
"psr-4": {
"": "src/"
}
},
...
}
获取作曲家和运行composer install
。 您应该加载一次作曲家的自动加载脚本像
require_once __DIR__ . '/vendor/autoload.php';
如果你有PHP小于5.3.0然后用dirname(__FILE__)
替换__DIR__
。
并把您的文件夹src
。例如,如果您有类Acme\Utils\FooBar
那么它应该在src/Acme/Utils/FooBar.php
。
你看过自动加载吗? http://www.php.net/manual/en/language.oop5.autoload.php –