php类无法设置public static var

时间:2013-12-24 00:17:48

标签: php static

我在类中设置public var时遇到了困难:

function printCaptcha($formId = NULL, $type = NULL, $fieldName = NULL) {
    require_once(SITE_ROOT . '/visualCaptcha/inc/visualcaptcha.class.php');
    $visualCaptcha = new \visualCaptcha\Captcha($formId, $type, $fieldName);
    $visualCaptcha->imageFile = BASE_URL . "image.php";
    $visualCaptcha->show();
}

$imageFile是我要设置的那个。其余的工作正常。

内部课程:

public static $imagesPath = 'images/visualcaptcha/';
    public static $audiosPath = 'audio/visualcaptcha/';
    public static $imageFile = 'image.php';
    public static $audioFile = 'audio.php';

班级的完整代码:https://github.com/emotionLoop/visualCaptcha-PHP/blob/master/inc/visualcaptcha.class.php

2 个答案:

答案 0 :(得分:1)

静态设置

\visualCaptcha\Captcha::$imageFile = BASE_URL . "image.php";

请参阅http://php.net/manual/language.oop5.static.php#example-194

从PHP 5.3起,您还可以使用类实例变量

$visualCaptcha::$imageFile = BASE_URL . "image.php";

虽然对我而言,这令人困惑和丑陋。

答案 1 :(得分:1)

静态变量绑定到类。不是对象。

因此你必须通过静态上下文访问它:

\visualCaptcha\Captcha::$imageFile = BASE_URL . "image.php";

(如果你想使用“对象”,可以使用get_class()来获取对象的类名,然后通过这种方式调用它:$classname::$var

但是,您可能希望了解何时使用静态变量以及“普通”类和对象成员。