我希望你能解决我刚遇到的问题。我试图让所有存储在每个类都知道的文件夹/classes
中的类。这是我尝试的方式:我创建了一个名为Main的类,它存储/ classes-folder的每个类的实例:
<?php
// Include classes:
$dir = './classes/';
$dh = opendir($dir);
while ($file = readdir($dh)) {
if (is_file($dir . $file) AND substr($file, 0, 2) == 'c_') {
include_once($dir . $file);
}
}
class Main {
PUBLIC function __construct() {
foreach ($GLOBALS['className'] as $key => $value) {
$this->{$value} = new $value;
}
}
PUBLIC function gI($classObject) { return $this->{$classObject}; }
}
$Main = new Main;
?>
我用户的每个其他类都扩展了Main类,如下所示:
include_once('./c_main.php');
class Kernel extends Main {
public function hello() {
var_dump($this->gI('Session')); // /classes/c_session.php
}
...
c_session.php
看起来是这样的:
<?php
include_once('./c_main.php');
class Session extends Main {
...
}
$className[] = 'Session'; // so $GLOBALS['className'] stores every class
&GT;
我期望var_dump($this->gI('Session
))to return an instance of
类会话but it's
Null`。有什么想法吗?我还有其他任何想法让全球所有课程都知道,我可以提出建议!
谢谢!
答案 0 :(得分:0)
使用composer:
将所有类放在带有命名空间 MyNameSpace 的 src 文件夹中,如下所示:
的src / test.php的
<?php
namespace MyNameSpace;
class Test {}
composer.json文件:
{
"name": "me/test",
"type": "project",
"autoload": {
"psr-4": {
"MyNameSpace\\": "src"
}
}
}
在PHP文件中使用命令“composer update”,然后使用 require_once“vendor / autoload.php”; ,而不是src。
示例index.php:
<?php
require_once "vendor/autoload.php";
$test = new MyNameSpace\Test;
示例外部包:
从命令行安装外部代码的示例:
作曲家需要联盟/网址