class 未知的实例
Instance unknown to class
我希望你能帮助我解决我刚刚遇到的问题。我正在尝试获取存储在每个 class 都知道的文件夹 /classes
中的所有 classes。这是我尝试的方法:我创建了一个名为 Main 的 class,它存储了 /classes 文件夹中每个 class 的实例:
<?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;
?>
每隔 class 我用户扩展 class 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
?>
我预计 var_dump($this->gI('Session
))to return an instance of
class Sessionbut it's
Null`。任何想法为什么?如果您有任何其他让所有 class 全球知名的想法,我欢迎您提出建议!
谢谢!
使用composer:
将所有 类 放入命名空间为 MyNameSpace 的 src 文件夹中,如下所示:
src/Test.php
<?php
namespace MyNameSpace;
class Test {}
composer.json 文件:
{
"name": "me/test",
"type": "project",
"autoload": {
"psr-4": {
"MyNameSpace\": "src"
}
}
}
在不在 src 中的 PHP 文件中使用命令 "composer update" 然后 require_once "vendor/autoload.php";。
示例index.php:
<?php
require_once "vendor/autoload.php";
$test = new MyNameSpace\Test;
示例外部包:
从命令行安装外部代码的示例:
作曲家要求league/url
我希望你能帮助我解决我刚刚遇到的问题。我正在尝试获取存储在每个 class 都知道的文件夹 /classes
中的所有 classes。这是我尝试的方法:我创建了一个名为 Main 的 class,它存储了 /classes 文件夹中每个 class 的实例:
<?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;
?>
每隔 class 我用户扩展 class 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
?>
我预计 var_dump($this->gI('Session
))to return an instance of
class Sessionbut it's
Null`。任何想法为什么?如果您有任何其他让所有 class 全球知名的想法,我欢迎您提出建议!
谢谢!
使用composer:
将所有 类 放入命名空间为 MyNameSpace 的 src 文件夹中,如下所示:
src/Test.php
<?php
namespace MyNameSpace;
class Test {}
composer.json 文件:
{
"name": "me/test",
"type": "project",
"autoload": {
"psr-4": {
"MyNameSpace\": "src"
}
}
}
在不在 src 中的 PHP 文件中使用命令 "composer update" 然后 require_once "vendor/autoload.php";。
示例index.php:
<?php
require_once "vendor/autoload.php";
$test = new MyNameSpace\Test;
示例外部包:
从命令行安装外部代码的示例:
作曲家要求league/url