【问题标题】:PHP:Setting a static member from a static class functionPHP:从静态类函数设置静态成员
【发布时间】:2016-03-01 23:35:42
【问题描述】:

我有一个班级。在这个类中,我有一个私有静态成员。我还有一个受保护的类函数以及一个公共静态类函数。

基本上,我正在尝试设置静态成员。流程是这样的。

在受保护的类函数内部,调用了另一个类函数: 前任。

class MyClass extends someOtherClass{

     private static $myVar;      

     protected function login(){
         MyClass::createDBInstance();

     }

     public static function createDBInstance(){
         self::$myVar = 'someValue';
     }
 }

我遇到的问题是,一旦它进入 createDBInstance,并尝试设置 self::myVar,它就会杀死。我是否忽略了如此基本的东西?

【问题讨论】:

  • 当“它杀死”时,你得到什么错误(例如 Apache 日志)?
  • 这段代码绝对有效。您确定您没有尝试从范围之外访问 login() 吗?
  • 我同意:codepad.org/TYevTaE4
  • PHP 致命错误:访问未声明的静态属性:MyClass::$myVar
  • 我可以在 login() 中设置 self:$myVar,但是一旦我在 createDBInstance 中,它就会杀死

标签: php static-members


【解决方案1】:

试试

private static $myVar;

self::$myVar = 'someValue';

注意$ 字符。

【讨论】:

  • 抱歉打错了...他们都有 $
  • 好的。您能否在页面或日志文件中收到错误消息?那可能会有所帮助。也可能会显示您调用 createDBInstance 的代码。
  • PHP 致命错误:访问未声明的静态属性:MyClass::$myVar
  • 您已将该属性声明为私有。通过测试,您可能会公开该属性,只是为了看看会发生什么。如果突然之间您不再收到该错误消息,那么您几乎肯定会尝试在您尚未与我们共享的代码的某些部分中从类外部访问该属性。错误消息指示文件和行号。他们应该为您指明正确的方向。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-05
  • 1970-01-01
  • 1970-01-01
  • 2021-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多