wake-up-neo.com

Öffentliche Klassenvariablen setzen

Wie lege ich eine öffentliche Variable fest? Ist das richtig?:

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

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

$Testclass = new Testclass();
$Testclass->testvar = "another value";    
$Testclass->dosomething();
11
Cudos

dies ist der Weg, aber ich würde vorschlagen, einen Getter und 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();
24
marvin
class Testclass
{
  public $testvar;

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

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

Konstruktoren verwenden.

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

Wenn Sie den angegebenen Beispielen folgen (verwenden Sie getter/setter oder setzen Sie ihn im Konstruktor), ändern Sie ihn in private, da dies die Kontrolle über die Einstellungen in der Variablen ist. 

Es macht keinen Sinn, die Eigenschaft mit all den zur Klasse hinzugefügten Dingen öffentlich zu halten.

0
AntonioCS

Innerhalb class Testclass:

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

Sie "setzen" den Wert dieser Variablen/dieses Attributs. Nicht überschreiben oder überladen. Ihr Code ist sehr, sehr allgemein und normal.

Alle diese Begriffe ("Setzen", "Überschreiben", "Überladen") haben bestimmte Bedeutungen. Override und Overload beziehen sich auf Polymorphismus (Subklassifizierung).

Von http://en.wikipedia.org/wiki/Object-oriented_programming :

Durch Polymorphismus kann der Programmierer abgeleitete Klassenmitglieder genauso behandeln wie die Mitglieder ihrer Elternklasse. Genauer gesagt, Polymorphismus in der objektorientierten Programmierung ist die Fähigkeit von Objekten, die zu verschiedenen Datentypen gehören, auf Methodenaufrufe von Methoden desselben Namens zu antworten, die jeweils einem geeigneten typspezifischen Verhalten entsprechen. Eine Methode oder ein Operator wie +, - oder * kann in vielen verschiedenen Situationen abstrakt angewendet werden. Wenn ein Hund zum Sprechen aufgefordert wird (), kann dies zu einer Bellen () führen. Wenn ein Schwein jedoch zum Sprechen aufgefordert wird (), kann dies zu einem Oink () führen. Beide erben von animal () die Sprache (), aber ihre abgeleiteten Klassenmethoden überschreiben die Methoden der übergeordneten Klasse. Dies ist der Vorrang vor dem Polymorphismus. Überladen von Polymorphismus ist die Verwendung einer Methodensignatur oder eines Operators wie "+", um abhängig von der Implementierung verschiedene Funktionen auszuführen. Der "+" - Operator kann beispielsweise verwendet werden, um eine Integer-Addition, eine Float-Addition, eine Listenkettung oder eine String-Verkettung durchzuführen. Es wird erwartet, dass zwei Unterklassen von Number, wie Integer und Double, sich korrekt in einer Sprache OOP addieren. Die Sprache muss daher den Additionsoperator "+" überladen, um auf diese Weise zu arbeiten. Dies verbessert die Lesbarkeit von Code. Wie dies implementiert wird, ist von Sprache zu Sprache unterschiedlich, aber die meisten OOP-Sprachen unterstützen zumindest einen gewissen Grad an Überlastung des Polymorphismus.

0
Scott Saunders

Für das Überladen benötigen Sie eine Unterklasse:

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

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

Dieser Code würde newVal widergeben.

0
Wim

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

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

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