php sınıfları istisna işleme soru

2 Cevap php

Orada ben yapıyorum bir iş başvurusu için açık bir kitap yarışması, ve tabii ki benim php bilgide bir eksiklik vurgulanır.

Ben doğrudan, bunu nasıl cevap eksik / yanlış anlama ben kulüpler ne gösterilmesini soruyorum cevap için demiyorum, dikkat edin. Soru:

3. Finish the following class to print "Person->name has been zapped" when the 
following is executed on a Person object: print $person;


class Person{
  private $name = '';
  public function __construct($name){
    $this->name = $name;
  }
}

$person = new Person('fred');
print $person; // fred has been zapped

Ben 'baskı' sanırdım ama şimdi, sınıf için özel durum işleme ekleyerek bazı yolu (ya orada durum atma şey olurdu, ya da ben sadece bir soru yanlış anlama var. I) hızlı bir testi (biliyorum ki koyarak Bir deneyin .. yakalamak baskı hala bir "catchable ölümcül hata" (Benim yakalamak ateş etmedi) ile başarısız programı neden olur.

Ben ne kadar okumalıyız?

David

2 Cevap

Hmm, PHP5 sınıfların bilginiz arıyorsanız daha fazla gibi geliyor. I magic methods yapmak için çalışıyoruz ne başarmak için nasıl içine daha fazla fikir için PHP'nin bir göz alarak öneririm.

Temelde, söz konusu nesnenin bir yazdırılabilir temsil arıyoruz.

Eğer / çıktılarının bir nesneyi yankı çalıştığınızda, magic method __toString() denir - bu nesnenin bir örneği olduğunu sınıf için tanımlı.

Burada, adı dönecektir __toString yöntemi, ve dize "has been zapped" bölümünün tanımı eklemek için, sınıf değiştirmek zorunda olurdu:

class Person{
  private $name = '';
  public function __construct($name){
    $this->name = $name;
  }
  public function __toString() {
    return $this->name . ' has been zapped';
  }
}

$person = new Person('fred');
print $person; // fred has been zapped

Ve beklenen çıktıyı alıyorum:

fred has been zapped