永发信息网

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

答案:2  悬赏:80  手机版
解决时间 2021-04-05 19:37
php父类如何调用子类的静态方法或变量?
最佳答案
class A{
    static public $m=1;
    static public function m(){
        echo static::$m,'
';
    }
    static public function n(){
        static::n();
    }
}
class B extends A{
    static public $m=111;
    static public function m(){
        parent::m();
    }
    static public function n(){
        echo parent::$m,'
';
    }
}
B::m();
B::n();
全部回答
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父类调用子类静态成员的方法,在子类重载父类的方法还是相当不错的 ,当时听朋友提起这个时,就异常激动。父类我们也叫做基类,或者底层类。一般都是最先设计,子类就是根据各个需要来设计,所以我们子类修改的可能性比较大,操作灵活性也比较大。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有关二十四节气的古典音乐
在定语从句中,如果介词在后面而不在关系代词
2101×0.5100的计算结果正确的是A.1B.2C.0.5D
如图,为啥蘑菇掰开里面有一层黑色的东西,能
有本小说不知道叫什么,男主角因为世族原因把
关于贴吧里经常说的PM具体是什么意思啊?
10道5年级行程问题及答案
人教版高一英语必修第一单元第4页答案
高邮市横泾镇农经保障服务中心怎么去啊,有知
三亚喜来登度假酒店网球场地址在什么地方,我
太原月嫂培训班哪家好?月嫂培训班多少钱?
填空题感应电流产生的条件:穿过闭合电路的__
9盎司纸杯尺寸及用途有哪些
关于信念的格言或警句,关于信念的名言警句
力什么小金鱼肚孑大左水里头朝下尾朝上
推荐资讯
根据语境续写句子,构成句式整齐、语意连贯的
国内大多城市的电视标清机顶盒支持多大分辨率
唐伯虎名言名句大全,唐伯虎有哪些名句?
什么项目比较好,2015年做什么投资项目好? 10
农村房屋产权证上没有我的名字,我是共有人吗
多选题下面是有关人受精卵中遗传物质的叙述,
冰岛人主要是丹麦人后代还是挪威人后代
如何区分手工篆刻和机器篆刻
据说蝴蝶破茧时,如果有人把茧弄开,蝴蝶就不
吉客猫无限流量怎样
驾驶证一天之内扣三本行驶证会不会锁住
单选题上海医学遗传研究所成功培育出第一头携
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?