2010-07-20 16 views
7

bir sınıfta tanımlanmış bir değişken ve dize concat'ing zaman: Ben içinde bir dize ile Concat için kullanmaya çalıştığınızda, ancakAyrıştırma hatası Ben ayrı yapılandırma dosyasında bir değişken tanımladık

define('URL', 'someurl.co.uk'); 

sınıfı:

class AdminEmail extends Email { 

    private $from = "jsmith".URL; 

aşağıdaki hatayı alıyorum: Ben bunu yankı eğer

Parse error: parse error, expecting `','' or `';'' 

Ama, mükemmel görüntüler!

Umut Burada açık bir şey kaçırmadım!

cevap

17

Sınıf değişkenlerini önceden tanımlarken sabitleri, işlevleri veya diğer değişkenleri kullanamazsınız. Sınıf tanımları taslaklar gibidir, komut dosyasında devam eden başka herhangi bir şeyden tamamen bağımsız olmalıdırlar (tabii ki diğer sınıflardaki bağımlılıklar hariç).

Bunu daha sonra ayarlamanız gerekir, ör. yapıcısındaki:

class AdminEmail extends Email { 

    private $from; 

    function __construct() 
    { 
    $this->from = "jsmith".URL; 
    } 

veya ayrı işlevinde

: Sınıf değişkenleri öncesi tanımlarken sabitleri, ancak işlevleri veya diğer değişkenler kullanabilirsiniz

function setFrom($from) 
    { 
    $this->from = $from; 
    } 
+1

Çok teşekkürler, ben sadece bu yüzden OOP öğrenmeye başladım Bahse girerim bu oldukça basit şeyler. Yine şerefe! – davidandrew

+0

Endişelenme, hayatım. Konsantre etmeye çalışıyorum. Ben de başladığımda bir sınıf özelliği olarak kullanmak için bir dize beni yakaladı! –

1

. Ayrıca, . nokta dize birleştirme işleci gibi operatörleri kullanamazsınız.

Ayrıntılar için PHP OO Manual'a bakın. Sınıf değişkenlerini önceden tanımlarken array() yapısını kullanabileceğinizi unutmayın. array() bir işlev değil, bir dil yapısıdır.

Bu durumda gerçekten çözüm olarak seçebileceğiniz iki yolunuz vardır. Sen yapıcısı değeri tanımlayabilirsiniz:

class AdminEmail extends Email { 

    private $from; 

    function __construct() 
    { 
    $this->from = "jsmith".URL; 
    } 

diğer çözüm her zaman bir fonksiyonu kullanarak değerini almak için:

class AdminEmail extends Email { 

    private $from; 

    function getFrom() 
    { 
    if (null === $this->from) { 
     $this->from = "jsmith" . URL; 
    } 
    return $this->from; 
    } 
İlgili konular