public class MyClass {
}
Run Code Online (Sandbox Code Playgroud)
在Java中,我们可以使用 String className = MyClass.class.getSimpleName();
如何在PHP中执行此操作?我已经知道get_class(),但它只适用于对象.目前我在Active Record工作.我需要声明MyClass::className.
我有oop php代码:
class a {
// with properties and functions
}
class b extends a {
public function test() {
echo __CLASS__; // this is b
// parent::__CLASS__ // error
}
}
$b = new b();
$b->test();
Run Code Online (Sandbox Code Playgroud)
我有一些父类(普通和抽象)和许多子类.子类扩展父类.因此,当我在某个时刻实例化孩子时,我需要找出我叫的父母.
例如,函数b::test()将返回a
我如何(从我的代码中)获得a班级b的课程?
谢谢
你能解释一下之间的区别 get_class($instance)和ClassName::class?
<?php
// PHP 5.5
var_dump(get_class(new Datetime())); // string(8) "DateTime"
var_dump(Datetime::class); // string(8) "Datetime" with lower t
Run Code Online (Sandbox Code Playgroud) <?php
class MyParent {
public static function tellSomething() {
return __CLASS__;
}
}
class MyChild extends MyParent {
}
echo MyChild::tellSomething();
Run Code Online (Sandbox Code Playgroud)
上面的代码回声"MyParent".我怎样才能得到儿童班的名字 - 在这种情况下是"MyChild"?如果它是可能的...
我只需要知道哪个孩子正在调用继承的方法.
我希望在基类中获取子类的名称,这样每当创建子类的对象时,我都会在基类中获得子类的名称.像这样的东西:
class Base_class {
function __construct() {
// Some code Here to get the name of the child class
}
}
class Child_class extends Base_Class {}
class Another_child_class extends Base_Class {}
$object = new Child_Class;
$object2 = new Another_child_class;
Run Code Online (Sandbox Code Playgroud)
当$object创建我想构造给我从中创建对象的类的名称.
由于某种原因(哪个?),子类中定义的PHP const/static变量在父类的静态上下文中不可用.
为什么?
例1:
class Model{
function getAll(){
$query = "SELECT * FROM " . self::DATABASE_TABLE_NAME;
// ...
}
}
class Post extends Model{
const DATABASE_TABLE_NAME = 'post';
}
$p = Post::getAll();
Run Code Online (Sandbox Code Playgroud)
当我跑步时,我得到:
Fatal error: Undefined class constant 'DATABASE_TABLE_NAME' on line 3
Run Code Online (Sandbox Code Playgroud)
($ query = ...的行)
例2:
class Model{
function getAll(){
$query = "SELECT * FROM " . self::$DATABASE_TABLE_NAME;
// ...
}
}
class Post extends Model{
static $DATABASE_TABLE_NAME = 'post';
}
$p = Post::getAll();
Run Code Online (Sandbox Code Playgroud)
然后我得到:
Fatal error: Access to …Run Code Online (Sandbox Code Playgroud) 我正在寻找以下php函数:
class foo
{
}
echo get_class_special(foo); // returns the string 'foo'
Run Code Online (Sandbox Code Playgroud)
php有一个函数来获取类的名称而不创建类的实例吗?
在php中我有一个ROOT类,所有其他类都继承该类.
abstract class ROOT{
public static function getClass(){
}
}
Run Code Online (Sandbox Code Playgroud)
我希望该函数返回从该类继承的对象的类(名称).因此,如果我创建一个对象Tree(扩展ROOT)并在其上调用getClass,它应该说"Tree"
函数get_class()仅适用于对象,因此不能在静态函数中使用.有没有办法实现这个目标?