Настройка переменных открытого класса

Как установить общедоступную переменную. Это верно?:

class Testclass { public $testvar = "default value"; function dosomething() { echo $this->testvar; } } $Testclass = new Testclass(); $Testclass->testvar = "another value"; $Testclass->dosomething(); 

Solutions Collecting From Web of "Настройка переменных открытого класса"

это способ, но я бы предложил написать геттер и сеттер для этой переменной.

 class Testclass { private $testvar = "default value"; public function setTestvar($testvar) { $this->testvar = $testvar; } public function getTestvar() { return $this->testvar; } function dosomething() { echo $this->getTestvar(); } } $Testclass = new Testclass(); $Testclass->setTestvar("another value"); $Testclass->dosomething(); 
 class Testclass { public $testvar; function dosomething() { echo $this->testvar; } } $Testclass = new Testclass(); $Testclass->testvar = "another value"; $Testclass->dosomething(); ////It will print "another value" 

Используйте конструкторы.

 <?php class TestClass { public $testVar = "default value"; public function __construct($varValue) { $this->testVar = $varValue; } } $object = new TestClass('another value'); print $object->testVar; ?> 

Для перегрузки вам нужен подкласс:

 class ChildTestclass extends Testclass { public $testvar = "newVal"; } $obj = new ChildTestclass(); $obj->dosomething(); 

Этот код будет эхом newVal .

Вы «устанавливаете» значение этого атрибута / атрибута. Не перегружать или перегружать его. Ваш код очень, очень распространенный и нормальный.

Все эти термины («набор», «переопределение», «перегрузка») имеют определенные значения. Переопределение и перегрузка – это полиморфизм (подклассификация).

Из http://en.wikipedia.org/wiki/Object-oriented_programming :

Полиморфизм позволяет программисту относиться к членам производного класса так же, как к членам их родительского класса. Точнее, полиморфизм в объектно-ориентированном программировании – это способность объектов, принадлежащих к разным типам данных, реагировать на вызовы методов методов с одним и тем же именем, каждый из которых соответствует соответствующему типу поведения. Один метод, или оператор, такой как +, – или *, может быть абстрактно применен во многих разных ситуациях. Если собаке приказано говорить (), это может вызвать кору (). Однако, если команде Pig приказано говорить (), это может вызвать oink (). Они оба наследуют слова () от Animal, но методы их производного класса переопределяют методы родительского класса; это переопределяющий полиморфизм. Перегрузка Полиморфизм – это использование одной сигнатуры метода или одного оператора, такого как «+», для выполнения нескольких различных функций в зависимости от реализации. Например, оператор «+» может использоваться для выполнения целочисленного добавления, добавления с плавающей запятой, конкатенации списков или конкатенации строк. Ожидается, что любые два подкласса Number, такие как Integer и Double, будут правильно объединены на языке OOP. Поэтому язык должен перегружать оператор сложения «+», чтобы работать таким образом. Это помогает улучшить читаемость кода. Как это реализовано, варьируется от языка к языку, но большинство языков ООП поддерживают по крайней мере некоторый уровень перегрузочного полиморфизма.

Если вы собираетесь следовать приведенным примерам (используя getter / setter или устанавливая его в конструкторе), измените его на private, поскольку это способы управления тем, что установлено в переменной.

Не имеет смысла держать собственность публичной со всеми этими вещами, добавленными в класс.

Добавьте метод getter и setter в ваш класс.

 public function setValue($new_value) { $this->testvar = $new_value; } public function getValue() { return $this->testvar; } 

Внутри class Testclass :

 public function __construct($new_value) { $this->testvar = $new_value; }