Как я должен совместно использовать / передавать переменные в различных методах в классе PHP? - PullRequest
1 голос
/ 05 августа 2010

Я пытаюсь установить значение из метода класса и пытаюсь получить его в другом методе.Пример кода, как показано ниже.Я думаю, что следующий вид set / get работает в классе Java.Погуглил, но все равно не смог найти подходящего решения.

Я искал "как обмениваться данными между функциями в PHP" и нашел Как я могу вызвать переменные-члены класса в статическом методе? , но это не ответило на мой вопрос.

<?php
class MyClass
{
    public $cons;

    function showConstant() {
        $this->setConstant(100); /* assign value to variable here */
        $this->showConstantGetter();
    }

    /* setter */
    function setConstant($aCons) {
        $cons  = $aCons;
    }

    /* getter */
    function getConstant() {
        return $cons;
    }


    function showConstantGetter() {
        echo "<br>getting const : ".$this->getConstant(); /* use the variable's value in this method here */
    }

}

$classname = "MyClass";
$class = new MyClass();
$class->showConstant();

?>

Ответы [ 5 ]

11 голосов
/ 05 августа 2010

Вы должны использовать $this->cons вместо $cons, вот и все.

3 голосов
/ 05 августа 2010

Почти хорошо, но:

function setConstant($aCons) {
        $this->cons  = $aCons;
    }

    /* getter */
    function getConstant() {
        return $this->cons;
    }
0 голосов
/ 05 августа 2010

Привет, спасибо за ответы. Это было очень быстрое решение. Очень ценю это. Спасибо всем и всем. Вот полный код, который работает:

<?php
class MyClass
{
    var $cons;

    function showConstant() {
        $this->setConstant(100); /* assign value to variable here */
        $this->showConstantGetter();
    }

    /* setter */
    function setConstant($aCons) {
        $this->cons  = $aCons;
    }

    /* getter */
    function getConstant() {
        return $this->cons;
    }


    function showConstantGetter() {
        echo "<br>getting const : ".$this->getConstant(); /* use the variable's value in this method here */
    }

}

$classname = "MyClass";
$class = new MyClass();
$class->showConstant();

?>
0 голосов
/ 05 августа 2010

Обратите внимание, что это:

$this->cons = $aCons;

, а не это:

$this->$cons = $aCons;

Если вы укажете $this->$cons, PHP сначала будет смотреть на значение в $consиспользует это как имя переменной экземпляра.В вашем случае в $cons пока ничего нет, поэтому он найдет пустое имя, которое вызывает сообщение об ошибке.

Этот тип косвенного обращения не является тем, что вы хотите сделать здесь, поэтому не ставьте там знак доллара дважды!

0 голосов
/ 05 августа 2010

Чтобы получить доступ к переменным экземпляра в PHP, вам нужно добавить к ним префикс $this->.

В вашем примере:

    function getConstant() {
        return $this->cons;
    }

Чтобы получить доступ к переменной класса (или статической), выиспользуйте self:: вместо $this->.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...