我在类中设置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
答案 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
)
但是,您可能希望了解何时使用静态变量以及“普通”类和对象成员。