Üst sınıf fonksiyonlardan çocuk sınıfta tanımlanmış sabit erişmek nasıl?

3 Cevap php

Ben php.net bu örneğini gördük:

<?php
class MyClass {

     const MY_CONST = "yonder";

     public function __construct() {

          $c = get_class( $this );
          echo $c::MY_CONST;
     }
}

class ChildClass extends MyClass {

     const MY_CONST = "bar";
}

$x = new ChildClass(); // prints 'bar'
$y = new MyClass(); // prints 'yonder'
?>

Ama $ c :: MY_CONST sadece sürüm 5.3.0 veya daha sonra kabul edilmektedir. Ben yazıyorum sınıfı bir çok dağıtılmış olabilir.

Temelde, ben çocuğu olarak sürekli bir tanımlanmış ve Sınıfım (baba class) işlevlerinden biri sabit kullanmak gerekiyor. Herhangi bir fikir?

3 Cevap

Nasıl kullanma hakkında static::MY_CONST?

Yerine

$c = get_class( $this );
echo $c::MY_CONST;

Bunu yapın

$c = get_class( $this );
echo constant($c . '::MY_CONST');

O "yonderyonder" yazdırır gibi (yani sabitler hakkında, onlar değişmez bir şey) o const ile çalışmak için alamadım, ama o var ile çalışıyor:

<?php
class MyClass {

     var $MY_CONST = "yonder";

     public function __construct() {

     echo $this->MY_CONST;
     }
}

class ChildClass extends MyClass {

     var $MY_CONST = "bar";
}

$x = new ChildClass(); // prints 'bar'
$y = new MyClass(); // prints 'yonder'

?>