PHP, C tarzı Değişken başlatma

3 Cevap php

PHP yerel, özel statik ve kamu değişkenler gibi bir şey var mı? Eğer öyleyse, her örnekleri verebilir ve nasıl kendi kapsamı içinde ve sınıf ve iç fonksiyonları dışında gösterilmiştir?

3 Cevap

Ben C + + hakkında biliyorum ama PHP hakkında nasıl çalıştığını orada değil:

Fonksiyon kapsamları için:

<?php

  $b = 6;

  function testFunc($a){
    echo $a.'-'.$b;
  }

  function testFunc2($a){
    global $b;
    echo $a.'-'.$b;
  }

  testFunc(3);
  testFunc2(3);

?>

Çıkış

3-
3-6

Fonksiyonların içinde kodu yalnızca genel anahtar sözcüğünü kullanarak değişkenler dışında işlevleri erişilebilir. Bkz http://php.net/manual/en/language.variables.scope.php

Sınıfları gelince:

<?php

class ExampleClass{

  private $private_var = 40;
  public $public_var = 20;
  public static $static_var = 50;

  private function classFuncOne(){
    echo $this->private_var.'-'.$this->public_var; // outputs class variables
  }

  public function classFuncTwo(){
    $this->classFuncOne();
    echo $private_var.'-'.$public_var; // outputs local variable, not class variable
  }

}

$myobj = new ExampleClass();

$myobj->classFuncTwo();
echo ExampleClass::$static_var;
$myobj->classFuncOne(); // fatal error occurs because method is private

?>

Çıktı olacaktır:

40-20
-
50
Fatal error: Call to private method ExampleClass::classFuncOne() from context '' in C:\xampp\htdocs\scope.php on line 22

Bir not almak için: değişkenleri set set veya söyleniyor olmasına rağmen PHP, değişken başlatma yok. Değişken ayarlandığında, bu değer ile tahsis edilmiştir. Sen değişkeni ve değerini kaldırmak için unset kullanabilirsiniz. Bir set değil değişken false eşdeğerdir, ve tüm hataları çıkışı ile kullanırsanız, bir E_NOTICE hata görürsünüz.

PHP, statik yerel, özel, kamu ve class değişkenleri korumalı vardır.

Ancak, PHP OOP uygulama şeyler biraz farklı: the manual size yardımcı olacaktır:

The visibility of a property or method can be defined by prefixing the declaration with the keywords public, protected or private.

Ayrıca, static keyword documentation bakabilirsiniz.

Burada, normal değişkenler ve bunların kapsamı hakkında daha fazla okumak mümkün olacak: http://php.net/manual/en/language.variables.scope.php:

Çoğunlukla tüm PHP değişkenleri tek bir kapsamı var.

Ben bağlantıları iyi yaptım daha size açıklamak mümkün olacağını umuyoruz ;-)

yes, PHP 5 incldude static variables ve visibility sınıfında.

class MyClass
{
    public static $my_static = 'foo';
    public $public = 'Public';
    protected $protected = 'Protected';
    private $private = 'Private';

    public function staticValue() {
       return self::$my_static;
    }
    function printHello()
    {
        echo $this->public;
        echo $this->protected;
        echo $this->private;
    }
}

$obj = new MyClass();
echo $obj->public; // Works
echo $obj->protected; // Fatal Error
echo $obj->private; // Fatal Error
$obj->printHello(); // Shows Public, Protected and Private