草庐IT

php - 函数覆盖是否需要实例化?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whatexactlyislate-staticbindinginPHP?在这个例子中,PHP将打印“NO”而不是“YES”,这与我的预期相反。如果我删除了functionc()上的static,将self::替换为$this->并执行$e=newB;$e->c();,一切正常。这是否意味着需要实例化才能使父类中的函数调用继承类中的重写函数?(附带问题:这是PHP的怪癖,还是这种逻辑也适用于大多数其他编程语言?如果是,其背后的基本原理是什么?)classA{staticfunctionc(){self::d(

PHP - 序列化一个具有静态属性的类

当用户登录到我的网站时,我创建了一个User的实例类,获取一些与用户相关的数据并将对象存储在SESSION中.我从数据库中获取的一些数据在整个session期间应该保持不变,并且我希望可以从其他对象访问这些数据。我更喜欢使用User::$static_value_in_class至$_SESSION['static_value_in_session']当使用另一个对象中的值时,但我愿意接受说服。问题是,当我序列化我的User时,这些值没有被记住实例进入SESSION,然后加载不同的页面。类定义:classUser{public$name;publicstatic$allowed_act

PHP:类外的静态变量

这个问题在这里已经有了答案:`static`keywordinsidefunction?(7个答案)关闭9年前。我在第3方代码中看到一个声明为静态的变量,但在任何类之外,只是在“正常”函数中。我从未见过static以这种方式使用,而且我在PHP文档中找不到任何内容。这是合法的PHP代码吗?这实际上与全局变量相同吗?如果不是,目的是什么?

php - 变量声明中的逗号是什么意思?

我在MediaWikiPHP源代码的includes/parser/Parser.php中找到了这个:publicfunctionreplaceInternalLinks2(&$s){global$wgExtraInterlanguageLinkPrefixes;static$tc=false,$e1,$e1_img;//...}这个逗号分隔的列表是什么?$tc收到什么值? 最佳答案 这等同于:static$tc=false;static$e1;static$e1_img;因此$tc收到了false。

php - 如何使 __set 也适用于 PHP 中的静态操作?

当我调用self::$parameter=1;时,__set没有被调用。有解决办法吗? 最佳答案 来自manual:Propertyoverloadingonlyworksinobjectcontext.Thesemagicmethodswillnotbetriggeredinstaticcontext.Thereforethesemethodsshouldnotbedeclaredstatic.AsofPHP5.3.0,awarningisissuedifoneofthemagicoverloadingmethodsisdecla

php - isset 静态类属性

classA{publicstatic$foo=42;}$class='A';$attribute='foo';var_dump(isset($class::$attribute));//givesbool(false)我如何检查这个类中是否存在这个静态属性? 最佳答案 使用variablevariables:var_dump(isset($class::$$attribute));//thetwodollarsareintentional如果您还没有PHP5.3,唯一准确的方法可能是使用ReflectionAPI:$reflect

php - 在 PHP 中重新初始化静态成员

我今天的考试有一道题,我必须确定输出结果。";statfun(++$x);}else{echo"lastnumis$count";}}statfun(2);?>输出是25914lastnumis20我不知道为什么这是输出。我知道这是由于静态成员造成的,但每次它进入函数时,成员$count都会重新初始化。我在StaticKeyword看到了文档.但是没有写关于重新初始化静态变量的内容吗?我们可以在PHP中重新初始化静态变量吗?具有相同或任何其他值? 最佳答案 eachtimeitcomesintothefunctionthemembe

php - PHP 5.3 之前的静态继承

classA{static$v="A";staticfunctionechoExtendedStaticVariable(){echoself::$v;}}classBextendsA{static$v="B";//overrideA'svariablewith"B"}为什么:echoB::$v打印“A”?我如何让它打印“B”?在PHP5.3之前有办法做到这一点吗? 最佳答案 B->echoExtendedStaticVariable()=='A'因为self::是在编译时计算的,而不是运行时.这就好像你写的是A::而不是self:

php - (PHP) 单例数据库类 - 静态方法呢?

这是一个基本的网站。根据此处的答案,我正在这样做:private$db;publicfunction__construct($id=null){$this->db=Db::getInstance();//singletonfromtheDbclass但是如果有静态方法,我就不能使用对象特定的变量。有什么比在静态方法中手动指定db变量更好的方法了吗?publicstaticfunctionsomeFunction($theID){$db=Db::getInstance();编辑:将变量设为静态并不能解决问题。访问未声明的静态属性。我仍然必须在静态函数中分配变量。问题是询问是否有办法解决这

php - Eloquent:在模型和他的 parent 身上 Hook 到 'saving' 事件

有这个parent:classBaseModelextendsEloquent{protectedstatic$rules=[];publicstaticfunctionboot(){parent::boot();static::saving(function($model){return$model->validate();//我怎样才能在子模型上做同样的事情?classCarextendsBaseModel{protectedstatic$rules=[];publicstaticfunctionboot(){parent::boot();static::saving(functi