我正在构建一个重用和简单的ORM库;一切都很好,除了我被一个愚蠢的继承限制。请考虑以下代码:

class BaseModel {

/*

* Return an instance of a Model from the database.

*/

static public function get (/* varargs */) {

// 1. Notice we want an instance of User

$class = get_class(parent); // value: bool(false)

$class = get_class(self); // value: bool(false)

$class = get_class(); // value: string(9) "BaseModel"

$class = __CLASS__; // value: string(9) "BaseModel"

// 2. Query the database with id

$row = get_row_from_db_as_array(func_get_args());

// 3. Return the filled instance

$obj = new $class();

$obj->data = $row;

return $obj;

}

}

class User extends BaseModel {

protected $table = 'users';

protected $fields = array('id', 'name');

protected $primary_keys = array('id');

}

class Section extends BaseModel {

// [...]

}

$my_user = User::get(3);

$my_user->name = 'Jean';

$other_user = User::get(24);

$other_user->name = 'Paul';

$my_user->save();

$other_user->save();

$my_section = Section::get('apropos');

$my_section->delete();

显然,这不是我期待的行为(虽然实际行为也有意义)..所以我的问题是,如果你们知道一个意思,在父类,孩子类的名称。

php 父类中获取子类的名称,php – 在父类中获取子类的名称(静态上下文)相关推荐

  1. c#获取父类_C#——父类中的this的指向,及用反射获取当前类所在的Type | 学步园...

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...

  2. java 继承 子类 实例化_关于Java继承中父类和子类构造函数的问题

    Java子类在实例化时默认调用的是父类的无参构造函数,不论实例化时调用的是子类的有参还是无参构造函数, 1.当父类没有显式定义构造方法时, 编辑器会默认为此类添加一个隐式无参构造函数.此时子类可以有自 ...

  3. 根据父类id查询所有的父级_父类子类抽象类,super final 重写方法,搞懂继承中复杂的知识点...

    继承 继承(Inheritance)可以实现类之间共享属性和方法,是面向对象编程的另一个特性 使用继承可以最大限度地实现代码复用. 定义:继承就是在已有类的基础上构建新的类,一个类继承已有类后,可以对 ...

  4. 父类引用指向子类对象,为什么会调用的是子类中重新的方法

    老毕的"编译看左边,运行看右边"(多态执行) (对面向对象语言中理解多态.继承很有帮助~~~) 老毕在讲到多态执行问题时,结合下面的例子,给我们总结了一套口诀:"成员变量 ...

  5. a.创建动物类Animal,在该类中创建一个成员方法cry(), 输出“动物会发出叫声”,以及一个eat()方法,输出“动物需要食物”; b.创建一个Animal子类Dog类,在该类中重写父类的成员

    创建Zoo类作为主类,在main方法中分别创建各个类对象 ,并调用各自类的cry()方法, 创建Dog类的对象赋值给Animal类的对象,然后调用cry()和eat()方法. ** a.创建动物类An ...

  6. java—使用反射对类进行操作(Class对象获取类名,包名,父类,接口,构造方法,普通方法,属性)

    (一)Class对象获取类名,包名,父类,接口 前提条件: 有两个接口IMessage,SystemEdition 一个父类Father 一个子类Son继承父类,实现两个接口IMessage,Syst ...

  7. 子类能否访问或覆盖父类的private方法

    http://bettereveryday.iteye.com/blog/591771 private关键字的定义是"除了包含该成员的类之外,其他任何类都无法访问这个成员.",也就 ...

  8. java子类创建过程_JAVA入门小小白学习中ing(匿名对象、封装性、继承性、子类对象的创建过程、spuer关键字(用法一))...

    小小白慢慢学习中ing 第十二天 努力努力 本日内容(匿名对象.封装性.继承性.子类对象的创建过程.spuer关键字) 1.匿名对象 创建对象的语法:Person p1 = new Person(); ...

  9. c# typescript_在任何IDE中从C#,Java或Python代码获取TypeScript接口的简单方法

    c# typescript by Leonardo Carreiro 莱昂纳多·卡雷罗(Leonardo Carreiro) 在任何IDE中从C#,Java或Python代码获取TypeScript接 ...

  10. 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 获取注入的 libbridge.so 动态库中的 load 函数地址 并 通过 远程调用 执行该函数 )

    文章目录 一.dlsym 函数简介 二.获取 目标进程 linker 中的 dlsym 函数地址 三.远程调用 目标进程 linker 中的 dlsym 函数 获取 注入的 libbridge.so ...

最新文章

  1. 如何在“首选项”摘要中显示Android首选项的当前值?
  2. 计算机组成原理we指什么,计算机组成原理课后习题答案一到九章
  3. 情人节脱单必备,程序员如何花式表白
  4. Diverse Strings
  5. java程序连接kafka_Java的Kafka:构建安全,可扩展的消息传递应用程序
  6. 做折线图_python的visvis库做折线图(line.py)代码详解
  7. 【爱有失落时】风与渊
  8. 使用axios 报 name.toUpperCase is not a function
  9. 【POJ 2785】【折半枚举】4 Values whose Sum is 0【暑期 No.6】
  10. Tomcat原理系列之一:整体架构,抓住主线
  11. Java Timer
  12. 程序员一般可以从什么平台接私活?
  13. 解决MacBook无法读写移动硬盘的问题
  14. mysql 数据库健康巡检 报告
  15. 「算法」FWT(快速沃尔什变换)
  16. npm i 和 npm i -S有什么区别吗?
  17. 辨大势定内局,解析新时代下的企业新刚需
  18. 安装apache出错
  19. canvas简单实现纯色背景图片抠图
  20. 【计算机网络】计算机网络核心知识点

热门文章

  1. 面向对象(二)——三大特性(封装、继承、多态)
  2. [Letcode]第[34]题[JAVA][在排序数组中查找元素的第一个和最后一个位置][暴力][二分]
  3. [JAVA][算法] [字符串匹配]KMP
  4. [剑指offer]面试题第[37]题[Leedcode][JAVA][第297题][二叉树列的序列化与反序列化][递归][BFS]
  5. Java集合容器面试题
  6. [Leedcode][JAVA][第914题][最大公约数]
  7. POJ-1050 To the Max 二维最大子段和
  8. 光谱 波长_【第三课】红外光谱仪及其联用技术
  9. 甘肃政法学院计算机科学与技术试题,甘肃政法学院计算机科学与技术专业课程教学大纲.doc...
  10. python数据预处理_Python数据预处理——缺失值、重复值