PHP - изменить переменную / функцию класса извне класса - PullRequest
4 голосов
/ 10 февраля 2011

Могу ли я изменить функцию или переменную, определенную в классе, извне класса, но без использования глобальных переменных?

это класс внутри включаемого файла # 2:

class moo{
  function whatever(){
    $somestuff = "....";
    return $somestuff; // <- is it possible to change this from "include file #1"
  }
}

в основном приложении, вот как используется класс:

include "file1.php";
include "file2.php"; // <- this is where the class above is defined

$what = $moo::whatever()
...

Ответы [ 3 ]

7 голосов
/ 10 февраля 2011

Вы спрашиваете о методах получения и установки или Статических переменных

class moo{

    // Declare class variable
    public $somestuff = false;

    // Declare static class variable, this will be the same for all class
    // instances
    public static $myStatic = false;

    // Setter for class variable
    function setSomething($s)
    {
        $this->somestuff = $s;
        return true; 
    }

    // Getter for class variable
    function getSomething($s)
    {
        return $this->somestuff;
    }
}

moo::$myStatic = "Bar";

$moo = new moo();
$moo->setSomething("Foo");
// This will echo "Foo";
echo $moo->getSomething();

// This will echo "Bar"
echo moo::$myStatic;

// So will this
echo $moo::$myStatic;
3 голосов
/ 10 февраля 2011

Есть несколько возможностей для достижения вашей цели.Вы можете написать getMethod и setMethod в своем классе, чтобы установить и получить переменную.

class moo{

  public $somestuff = 'abcdefg';

  function setSomestuff (value) {
     $this->somestuff = value;
  }

  function getSomestuff () {
     return $this->somestuff;
  }
}
1 голос
/ 10 февраля 2011

Установите его как атрибут экземпляра в конструкторе, а затем метод вернет любое значение в атрибуте. Таким образом, вы можете изменить значение в разных экземплярах везде, где вы можете получить ссылку на них.

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