目标:我希望能够使用extends语句和NO require语句扩展任何php类,如下所示:
<?php
class some_child extends some_parent{
}
?>
但目前我必须这样做:
<?php
require_once("some_parent.php");
class some_child extends some_parent{
}
?>
请注意:
问题 我如何实现这一点,即扩展父类而不需要它?
如果这有点不具有建设性,我提前道歉,我从来不知道这里的规则。 TIA修改
只是为了更清楚,我正在寻找一个&#34;在幕后&#34;解决方案,希望我可以在htaccess或php.ini中设置一些东西,不仅包括必要的文件,还加载它们,对我来说似乎include_path不加载该目录中的类。这就是我得到致命错误的原因
最后,如果我之前没有看过它,我不会提出这个问题。我知道它可能,只是寻找一些指导。谢谢,谢谢
答案 0 :(得分:3)
这是我能给你看的最简单的版本:
function __autoload($className) {
if (file_exists($className . '.php')) {
require_once $className . '.php';
}
return false;
}
您需要将您的目录结构纳入您的帐户,以确保正确加载文件。
因此,如果您有一个名为helpers的目录和一个名为libraries的目录,它可能如下所示:
function __autoload($className) {
$directories = array('helpers', 'libraries');
foreach ($directories as $dir) {
$path = '/'.$dir.'/'$className . '.php';
if (file_exists($path)) {
require_once $path;
}
}
}
答案 1 :(得分:0)
所以......是的,回答我自己的问题......这完全符合我的需求:
所以我发现你可以设置一个php指令,它会自动添加和/或将一些php文件附加到你访问的每个php文件中......
这就是我所做的:
在php.ini中
auto_prepend_file =“require.php”
require.php包含我所有的require_once语句......
完全满足我的需求:)感谢以前的答案。
答案 2 :(得分:-2)
执行此操作的最佳方法我认为需要索引中的所有文件,然后运行核心对象。 像这样:
require_once ("config/config.php");
require_once ("config/application_config.php");
require_once ("config/database.php");
require_once ("system/systemcomponent.php");
require_once ("system/program.php");
$program = new Program ();
$program->run ();
然后你可以让你的程序对象做你想要程序做的任何事情! 在延长之前不必担心需要任何东西。
更新:
你也可以这样做。
//get all files in the root directory
$php_files = scandir ("./");
//take out the "." and ".." directories (used for navigating)
for ($i = 0; $i <= 2; $i++)
array_splice ($php_files, 0, 1);
//Require all found files
foreach ($php_files as $file)
require_once ($file);
请注意,它并没有吞噬非.php文件。