当前位置:首页 » 编程语言 » php父类获取子类

php父类获取子类

发布时间: 2023-05-29 07:21:21

php获取类名的一个问题(基类获取子类名)

从父类中获得子类名称,并不是不可能,
但是,这样做严重违背设计原则,属于设计错误。设计上不及格。。
应该检讨自己的需求和模型设计。

把具体应用情况说一说,我看看哪里做扭曲了

㈡ PHP中父类里调用子类的方法

无解,除非是静态public方法,function前加static,可以testB::demo2()这样调用
子类重写之后的方法父类没法调用,换句话说,父类咋知道自己会被哪个子类继承呢,就算你强转虚表也不一样,无解的问题
而且父类咋需要调用子类的方法呢,就算你以后实践中有这样的需求,也只能说明你设计上不合理

㈢ php怎么获取分类下所有子类

这是php静态数据过早绑定的问题(即子类衡缓的all方法是从父类中继承过来的,__CLASS__常量过早的绑定成了父类名),解决这个问题:方丛拍法一:class all{ function all() { return __CLASS__; }} class my extends all{ function all() { return __CLASS__; }}//子类定义同名的方法(这其实就是覆盖了父类的方法,让__CLASS__绑定为自己的类名)echo my::all();
方法二:class all{ function all() { return get_class($this); }} class my extends all{}$my = new my();//非静态调用是不存在过早绑定的情况的。echo $my->all();
这个可以看看php5.3.0版本之后的静态迟绑定渗拦羡相关信息(static关键字)

㈣ php如何获取父类下所有子类Id

今天做项目时遇到php如何获取父类下所有子类Id??,把代码分享给大家。


复制代码代码如下:
functiongetChildrenIds($sort_id)
{
$db=$this->loadDB();
$ids='';
$sql="SELECT*FROMt_deptWHERE`parent_id`='{$sort_id}'";
$query=$db->query($sql);
$result=$query->result_array();

if($result)
{
foreach($resultas$key=>$val)
{
$ids.=','.$val['id'];
$ids.=$this->getChildrenIds($val['id']);
}
}
return$ids;
}

㈤ php 如何在父类访问子类的属性

可以

用$this就可以了。

静态的属性直接用类名访问

㈥ php 知道父类id查找所有子类id,怎么写。

functiongetAllIds($id)
{
$res=mysql_query("select*from`表名`wherefather_id='$id'");
while($row=mysql_fetch_array($res,MYSQL_ASSOC))
{
print_r($row);
getAllIds($row['class_id']);
}
}

㈦ php父类如何调用子类的静态方法或变量

php父类中怎么调用子类的的静态属性了,Oh,my god,如果被面试官问道这种问题,你一定会说shit,fucky question。你会说我很少这么做,况且php对于静态的操作太随意了,php在父类调用子类的静态属性是一件麻烦的事情。我们知道子类中调用父类的静态属性,可以用self::的形式。但是父类调用子类如果用self::就只能调用到父类的静态属性。那么,怎么办了?php是不是无法做到了?答案当然是否定的,php中还可以使用在父类中用子类的类名来调用的方法。
不过,这当中仍然存在一个问题,就是如果我有多个类继承了同一个父类,而且父类的某个函数要用到各个子类的静态属性的话,就想当trouble了。这里有个php的朋友提供了一种思路,采用在子类中重载父类的方法使父类得到静态属性。父类中使用了get_class函数得到类名,get_class()是父类名,get_class($this)是子类名。好了得到这个再用eval函数做下执行语句就OK啦。例子:
//父类class A {
public function __con(){
//这里主要为让大家看清楚,所以打印出来类名,供大家学习
echo(get_class($this)).'/';
echo(get_class()).'/';
eval(\$ab = . get_class($this) . ::\$table;);echo $ab;}}//子类Bclass B extends A {
static $table = 'b table';
function __construct(){
$this-__con();}}//子类Cclass C extends A{
static $table = 'c table';
function cc(){
$this-__con();}}//调用
new B; //输出结果 B A b table
$c = new C;
上面就是php父类调用子类静态成员的方法,在子类重载父类的方法还是相当不错的 ,当时听朋友提起这个时,就异常激动。父类我们也叫做基类,或者底层类。一般都是最先设计,子类就是根据各个需要来设计,所以我们子类修改的可能性比较大,操作灵活性也比较大。

㈧ php 知道父类id查找所有子类id,怎么写。

functiongetAllIds($id)
{
$res=mysql_query("者配select*from`表名`wherefather_id='$id'");
while($row=缓瞎mysql_fetch_array($res,MYSQL_ASSOC))
{
首哪指print_r($row);
getAllIds($row['class_id']);
}
}

㈨ php 父类为什么能调用子类的属性

在集成的时候父类的属性会被保护。如果想要调用父类的属性必须使用父类对象super去调用,不然访问不了。你在子类中没有X的属性,所以在调用时使用this或super调用属性,这个时候不论是this还是super调用的都是父类的X属性。

热点内容
方舟服务器虚拟内存是什么意思 发布:2024-12-22 14:21:52 浏览:955
磁力片编程课 发布:2024-12-22 14:10:57 浏览:271
小米6实际存储空间 发布:2024-12-22 13:41:25 浏览:594
sql注入补丁 发布:2024-12-22 13:32:58 浏览:120
小区高层消防逃生怎么配置 发布:2024-12-22 13:29:20 浏览:717
服务器配置光纤网卡ip 发布:2024-12-22 13:22:47 浏览:516
地图下载源码 发布:2024-12-22 13:18:40 浏览:394
navicat存储过程导出 发布:2024-12-22 13:12:44 浏览:300
androidservice线程 发布:2024-12-22 13:04:57 浏览:302
ntplinux服务器配置 发布:2024-12-22 12:28:23 浏览:268