从存储在变量中的类访问静态变量

时间:2016-06-23 12:30:22

标签: php class

给出一个课程:

class SomeClass{
     static $information = 'useful information';
}

我试图访问一组php类中的静态变量。每个类都有$ information静态变量。如果我直接访问静态变量

echo SomeClass::$information;

程序输出信息,但是如果我尝试访问它,将其存储在变量中,我会收到错误,即“::”是意外的。

$class = SomeClass;
echo $class::$information;

将类存储在变量中的原因是我可以创建一个可以创建用户数组或项目数组的函数。

3 个答案:

答案 0 :(得分:1)

class SomeClass {
  public static $information = 'useful information';

  public static function getInformation() {
    return self::$information;
  }
} 

然后您可以执行以下操作:

# Static Access
echo SomeClass::$information;
echo SomeClass::getInformation();

# Static Access via Class Name in Variable
$someClass = 'SomeClass';
echo $someClass::$information;

## Instantiated access
$someClass = new SomeClass();
echo $someClass->$information;
echo $someClass->getInformation();

答案 1 :(得分:0)

你不能在变量中存储对类的引用,它是无用的。

相反,您可以将类名存储在变量中并调用静态方法或变量:

{{1}}

答案 2 :(得分:0)

你可以这样做:

MyServiceImpl1

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@taglib uri="http://www.springframework.org/tags/form" prefix="sp" %> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <script type="text/javascript"> function checkEmp(value) { var eName = document.getElementById("empyee"); var prev = ''; if(value != "") { alert(prev); prev = prev+ value; alert(value); alert(prev); eName.value = prev; } } </script> <body> <select name="individual" multiple="multiple" class="form-control" id="dd5" size="6" onchange='checkEmp(this.value);'> <option value=""></option> <c:forEach var="emp" items="${emp}"> <option value="${emp.employee_Name}">${emp.employee_Name}</option> </c:forEach> </select> <textarea id="empyee" name="empyee" ></textarea> </body> </html>将字符串的完全限定名称作为字符串。