簡體   English   中英

php類無法設置公共靜態變量

[英]php class cannot set public static 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

靜態設置

\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";

盡管對我來說,這是令人困惑和丑陋的。

靜態變量綁定到該類。 不是對象。

因此,您必須通過靜態上下文訪問它:

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

(您可以,如果您想為此使用“對象”,請使用get_class()獲取對象的類名,然后通過以下方式調用它: $classname::$var

但是,也許您可​​能想閱讀何時使用靜態變量以及何時使用“普通”類和對象成員。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM