我想在命名空间中获取所有类.我有这样的事情:
#File: MyClass1.php
namespace MyNamespace;
class MyClass1() { ... }
#File: MyClass2.php
namespace MyNamespace;
class MyClass2() { ... }
#Any number of files and classes with MyNamespace may be specified.
#File: ClassHandler.php
namespace SomethingElse;
use MyNamespace as Classes;
class ClassHandler {
public function getAllClasses() {
// Here I want every classes declared inside MyNamespace.
}
}
Run Code Online (Sandbox Code Playgroud)
我想get_declared_classes()里面getAllClasses(),但MyClass1并MyClass2没有在列表中.
我怎么能这样做?
我有一个只包含一个类的php文件.通过了解文件名,我怎么知道哪个类?我知道我可以用regexp匹配做一些事情,但是有标准的php方式吗?(该文件已包含在试图找出类名的页面中).
例:
ClassName.php
<?php echo "This will crash all"; ?>
Run Code Online (Sandbox Code Playgroud)
在另一个档案中......
foreach ($FILENAMES_WITHOUT_DOT_PHP as $name => $value) {
if (class_exists( $value )) {
echo "ClassName exists...";
}
else {
echo "ClassName doesn't exists....";
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码的输出是: 这会崩溃所有
而不是这样: ClassName不存在....
自动加载功能:
function __autoload( $var_class )
{
require_once( "$var_class.php") ;
}
Run Code Online (Sandbox Code Playgroud) 说我得到了一个类:
<?
class ObjectModel {
}
Run Code Online (Sandbox Code Playgroud)
我得到了一些其他课程:
<?
class SomeNewClass extends ObjectModel {
}
class SomeOtherNewClass extends ObjectModel {
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让Object(SomeNewClass和SomeOtherNewClass)基于ObjectModel类?
我在这里使用了代码的修改版本确定在PHP类文件中定义了哪些类,以从特定的文件列表创建类和函数的多维数组.我最终得到的是这个(我知道这些名字搞砸了,但是我已经搞砸了,并且必须返回并更改3个不同文件中的类名和函数名,所以我们假设这些是合法的类名和函数名),
Array
(
[0] => Array
(
[namethis_whatever_I_want] => Array
(
[0] => another_function
[1] => whatever_function
)
)
[1] => Array
(
[tc_class_simplevar] => Array
(
[0] => set_var_test
[1] => get_var_test
)
)
[2] => Array
(
[another_freekin_class] => Array
(
[0] => some_function
[1] => another_crazy_function
)
)
)
Run Code Online (Sandbox Code Playgroud)
所以现在我需要能够访问每个类下的类名和函数名,而不知道它们中的任何索引是什么.我已经尝试过循环,foreach,并使用像$ i和$ ii这样的计数器来访问它们的数字索引,但我尝试的任何东西都会打印出除垃圾或错误之外的任何内容.
我在想类似嵌入式foreach语句的东西
$i = 0;
foreach($array as $class){
echo $class[$i];
$ii = 0;
foreach($class as $val){
echo $val[$ii];
$ii++;
}
$i++;
}
Run Code Online (Sandbox Code Playgroud)
但没有运气.
还试图访问$ …
我想在选择特定的脚本文件后将所有类及其方法名称以及方法类型(公共、私有、受保护)输出到数组。
这将用于创建权限系统,管理员可以在其中指定特定用户组可以访问哪些类。
例如,在脚本文件 test.php 中,它具有以下内容:
class test{
public function dostuff(){
}
private function hide(){
}
}
Run Code Online (Sandbox Code Playgroud)
它应该给我一个像这样的列表:类:测试方法:dostuff(公共)隐藏(私有)