Public class değişkenleri ayarlama

7 Cevap php

Nasıl bir ortak değişken kurarım. Bu doğru mudur?:

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

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

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

7 Cevap

Bu şekilde, ama bu değişken için bir alıcı ve ayarlayıcı yazmak için öneririm.

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

Kurucularını kullanın.

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

Sınıf için alıcı ve ayarlayıcı yöntemi ekleyin.

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

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

İç class Testclass:

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

Aşırı yükleme için bir alt sınıf gerekir:

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

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

Bu kod yankı newVal.

Bunu değişken / niteliğin değerini "ayarı" demektir. Geçersiz veya yüklenme değil. Sizin kod çok, çok yaygın ve normaldir.

Tüm bu terimlerin (,, "aşırı" "kılma" "set") özel anlamları vardır. Geçersiz kılma ve Aşırı Yük polimorfizm (sınıflara) üzeresiniz.

Dan http://en.wikipedia.org/wiki/Object-oriented%5Fprogramming:

Polimorfizm programcı sadece kendi ana sınıfının 'üyeleri gibi türetilmiş sınıf üyeleri tedavi sağlar. Daha doğrusu, nesne yönelimli programlama Polimorfizm uygun bir tip özgü davranış göre aynı isimde, her birinin yöntemleri yöntem çağrılarına yanıt farklı veri türlerine ait nesnelerin yeteneğidir. Bir yöntem ya da bu tür + gibi bir operatör - ya da *, soyut çok farklı durumlarda uygulanabilir. Bir Köpek () buyurduğu ise bu) (bir havlama ortaya çıkarabilir. A Pig () buyurduğu Ancak, eğer bu) (bir oink ortaya çıkarabilir. Her ikisi Animal dan () konuşmak miras, ancak bunların türetilmiş sınıf yöntemleri üst sınıf yöntemlerini geçersiz; Bu geçersiz kılma polimorfizmi. Aşırı yükleme Polimorfizmi uygulanmasına bağlı olarak birkaç farklı işlevleri gerçekleştirmek için örneğin "+" gibi bir yöntem imzası ya da bir operatör bölgesinin kullanımıdır. "+" Operatörü, örneğin, ekleme, liste birleştirme veya dize birleştirme şamandıra, tamsayı ek gerçekleştirmek için kullanılan olabilir. Tamsayı ve Çift olarak Numarası herhangi iki alt sınıfları, bir OOP dili düzgün araya eklemek bekleniyor. Dil, bu nedenle bu şekilde çalışmak için, toplama operatörü, "+" aşırı gerekir. Bu kod okunabilirliği artırmaya yardımcı olur. Bu nasıl uygulanır dilden dile değişir, ancak çoğu OOP diller poliformizme yüklenme azından belli bir düzeyde destekler.

Bu değişkeni ayarlanır ne kontrol etmek yolu vardır beri özel olarak değiştirebilirsiniz (alıcı / ayarlayıcı kullanarak veya yapıcısı olarak ayarlayarak) verilen örnekleri takip için gidiyoruz.

Bu sınıfa eklenen tüm bu şeyler ile mülkiyet kamu tutmak mantıklı değil.