首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问静态变量定义中的静态方法

问访问静态变量定义中的静态方法
EN

Stack Overflow用户
提问于 2014-02-28 18:29:31
回答 1查看 966关注 0票数 3

我正在尝试访问静态类变量定义中的静态类方法。我尝试过几次,但无法编译代码。

天真尝试:

代码语言:javascript
复制
<?php
class TestClass {
  private static $VAR = doSomething(array());

  private static function doSomething($input) {
    return null;
  }
}
?>

错误:

代码语言:javascript
复制
dev@box:~/php$ php -l TestClass.php 
PHP Parse error:  syntax error, unexpected '(', expecting ',' or ';' in TestClass.php on line 3
Errors parsing TestClass.php

直觉尝试:

代码语言:javascript
复制
<?php
class TestClass {
  private static $VAR = self::doSomething(array());

  private static function doSomething($input) {
    return null;
  }
}
?>

错误:

代码语言:javascript
复制
dev@box:~/php$ php -l TestClass.php 
PHP Parse error:  syntax error, unexpected '(', expecting ',' or ';' in TestClass.php on line 3
Errors parsing TestClass.php

逻辑尝试:

代码语言:javascript
复制
<?php
class TestClass {
  private static $VAR = static::doSomething(array());

  private static function doSomething($input) {
    return null;
  }
}
?>

错误:

代码语言:javascript
复制
dev@box:~/php$ php -l TestClass.php
PHP Fatal error:  "static::" is not allowed in compile-time constants in TestClass.php on line 3
Errors parsing TestClass.php

绝望的尝试:

代码语言:javascript
复制
<?php
class TestClass {
  private static $VAR = $this->doSomething(array());

  private static function doSomething($input) {
    return null;
  }
}
?>

错误:

代码语言:javascript
复制
dev@Dev08:~/php$ php -l TestClass.php 
PHP Parse error:  syntax error, unexpected '$this' (T_VARIABLE) in TestClass.php on line 3
Errors parsing TestClass.php

任务看起来很简单,使用静态方法来定义静态变量,但是我不知道如何在静态变量声明的上下文中正确地访问静态方法。

如何在PHP v5.5.3__中的静态变量定义中调用静态方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-28 18:35:23

正确尝试:

代码语言:javascript
复制
<?php
class TestClass {
  private static $VAR = null;

  private static function doSomething($input) {
    return null;
  }

  public static function Construct(){
      self::$VAR = self::doSomething(array());
  }
}
TestClass::Construct();
?>

可以将静态初始化为标量和数组。不能用函数调用初始化它。因此,您需要一个公共方法,如果您需要私有的东西,可以调用它来初始化静力学。

如果他们是公开的,你可以:

代码语言:javascript
复制
TestClass::$VAR = TestClass::doSomething(array());

就在类声明之后或者要实例化它的时候。

证明

与任何其他PHP静态变量一样,静态属性只能使用文字或常量进行初始化;表达式不允许。因此,虽然可以将静态属性初始化为整数或数组(例如),但不能将其初始化为另一个变量、函数返回值或对象。来自PHP.net/静态

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22103052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档