Frage

Wie setze ich eine öffentliche Variable? Ist das richtig?:

class Testclass
{
  public $testvar = "default value";

  function dosomething()
  {
    echo $this->testvar;
  }
}

$Testclass = new Testclass();
$Testclass->testvar = "another value";    
$Testclass->dosomething();
War es hilfreich?

Lösung

Dies ist der Weg, aber ich würde empfehlen, einen Getter und einen Setter für diese Variable zu schreiben.

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();

Andere Tipps

Konstruktoren verwenden.

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

  function dosomething()
  {
    echo $this->testvar;
  }
}

$Testclass = new Testclass();
$Testclass->testvar = "another value";    
$Testclass->dosomething(); ////It will print "another value"

Für Überladung benötigen Sie eine Unterklasse:

class ChildTestclass extends Testclass {
    public $testvar = "newVal";
}

$obj = new ChildTestclass();
$obj->dosomething();

Dieser Code würde wiederholen newVal.

Sie "setzen" den Wert dieses Variablen/Attributs. Nicht überschreibend oder überladen es. Ihr Code ist sehr, sehr häufig und normal.

Alle diese Begriffe ("set", "override", "overload") haben spezifische Bedeutungen. Überschreibung und Überlastung handelt von Polymorphismus (Unterklasse).

Aus http://en.wikipedia.org/wiki/object-oriented_programming :

Durch Polymorphismus kann der Programmierer abgeleitete Klassenmitglieder genau wie die Mitglieder der Elternklasse behandeln. Genauer gesagt ist Polymorphismus in der objektorientierten Programmierung die Fähigkeit von Objekten, die zu verschiedenen Datentypen gehören, auf Methodenaufrufe des gleichnamigen Methodens zu reagieren, jeweils gemäß einem geeigneten typspezifischen Verhalten. Eine Methode oder ein Operator wie +, -oder *kann in vielen verschiedenen Situationen abstrakt angewendet werden. Wenn ein Hund befohlen wird, zu sprechen (), kann dies eine Rinde hervorrufen (). Wenn jedoch ein Schwein befohlen wird, zu sprechen (), kann dies einen Oink () hervorrufen. Sie erben beide sprechen () aus dem Tier, aber ihre abgeleiteten Klassenmethoden überschreiben die Methoden der Elternklasse; Dies ist übergeordnetes Polymorphismus. Überlastungspolymorphismus ist die Verwendung einer Methode -Signatur oder eines Bedieners wie "+", um je nach Implementierung verschiedene Funktionen auszuführen. Der "+" -Operator kann beispielsweise verwendet werden, um eine Ganzzahl -Addition, Float Addition, List -Verkettung oder String -Verkettung durchzuführen. Es wird erwartet, dass zwei beliebige Zahlenunterklassen wie Ganzzahl und Double in einer OOP -Sprache ordnungsgemäß zusammengefügt werden. Die Sprache muss daher den Additionsbetreiber "+" überlasten, um auf diese Weise zu arbeiten. Dies hilft, die Code -Lesbarkeit zu verbessern. Wie dies implementiert wird, variiert von Sprache zu Sprache, aber die meisten OOP -Sprachen unterstützen zumindest ein gewisses Maß an Überlastung von Polymorphismus.

Wenn Sie die angegebenen Beispiele befolgen (mit Getter/Setter oder im Konstruktor einstellen), ändern Sie es in privat, da dies Möglichkeiten sind, das zu steuern, was in der Variablen festgelegt ist.

Es ist nicht sinnvoll, das Eigentum mit all den Dingen, die der Klasse hinzugefügt wurden, öffentlich zu halten.

Fügen Sie Ihrer Klasse die Getter- und Setter -Methode hinzu.

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

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

Innen class Testclass:

public function __construct($new_value)
{
    $this->testvar = $new_value;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top