Php 在类中包含文件?
我的主类定义如下:Php 在类中包含文件?,php,oop,dependencies,Php,Oop,Dependencies,我的主类定义如下: class Admin { private $theme_name; function __construct($theme_name) { $this->theme_name = $theme_name; $this->init(); } private function init(){ // load the framework files } } 实例化这个
class Admin {
private $theme_name;
function __construct($theme_name) {
$this->theme_name = $theme_name;
$this->init();
}
private function init(){
// load the framework files
}
}
实例化这个类将加载所有单独的模块类,并实例化它们
我的问题是,我是否应该在init方法中包含必要的文件,如下所示:
private function init(){
// load the framework files
require_once ( 'interface.php' );
require_once ( 'uploader.php' );
//etc ..
$interface = new Interface(); //etc..
}
或者,我应该像这样在类声明上面包含它们:
require_once ( 'interface.php' );
require_once ( 'uploader.php' );
class Admin { //etc..
在类中包含依赖项的最佳方法是什么?两者都很好,但第二种方法更好,它使代码更漂亮
我建议将您的
init()
方法更改为static
,因为这不是管理员的行为,并避免每次您想要包含这些文件时都实例化admin对象。它们都是相同的。虽然我会在类外包含它们,以保持更好的代码清洁度,从技术上讲,每次调用函数时都会调用include,但在这种情况下,它是一个init
,因此听起来它可能只被调用一次。自动加载!它的价格有点高(有很多字符串工作要做,这会增加加载),但是如果您只需要几次,它应该可以很好地完成这项工作
您可以使用_autoload()函数只拉入需要调用的类
<?php
function __autoload($class_name)
{
$filename = "../class/".$class_name."php";
if ( file_exists($filename) )
{
include_once $filename;
}
}
?>
在您的情况下,因为所有的
Admin
实例都需要这些额外的文件,所以有必要将这些require\u语句拉到文件的顶部
话虽如此,如果你有一个类自动加载你可以清理文件甚至更多。您向注册了一个函数,该函数在所需类尚未加载时将被调用;该函数将查找并加载必要的源文件