PHP, ne zaman soyut sınıflar vs statik yöntemleri kullanmak gerekir?

2 Cevap php

Ben statik bir yöntem erişmek için gerekiyorsa ben onu örneği gerekiyor asla sadece, ben sınıf soyut yapmak gerektiğini yorumuna altında değilim. Doğru mudur?

2 Cevap

PHP sınıfları statik tanımlayıcı olmayan, bu nedenle diğer yöntemler örneğinin birini engellemek için gereklidir.

Bunu soyut tanımlayarak tarafından örneği olmaktan bir sınıf önleyebilir ve bu soyut sınıfın amacı olmasa da bu, bunu yapmak için ucuz bir yoldur.

Diğer yöntemler özel contructor tanımlayan içerir

private function __construct() {}

Yoksa örneği olamaz neden olarak daha anlamlı bir mesaj vermek istiyorsanız contructor bir istisna atma.

function __construct() { throw new Exception('This is a static class'); }

Ayrıca istemiyorsanız sınıf sınıf finalini ilan Subclassed.

final class foo { }

Ya da garip durumda alt sınıf, ama çocukların herhangi bir yapıcı finalini ilan örneğini izin değil muktedir istiyorum. (Uzak zorlama bir durum, ama bütünlüğü için)

final private function __construct() {}

Ben sorunun biraz emin değilim. Statik yöntemler soyut sınıflardan oldukça farklıdır. Genellikle bir sınıf örneği istemiyorsanız eğer soyut bir sınıf yapacağız, ama alt sınıflar örneği bekliyoruz. Soyut sınıfları kullanarak alt-sınıflar tam sınıfını uygulamak için yöntemler kalanını dolduracak kısmen uygulanan bir sınıf oluşturmak için çok yararlı olabilir.

Eğer sınıfın kullanımını önlemek istiyorsanız statik yöntemlerin tam bir sınıf soyut ilan edilebilir, ama genellikle bir sınıf soyut işareti varsa, sınıfını genişletmek sınıfları bulmak mümkün olması gerektiğini söyleyebilirim. Ben statik yöntemler dolu bir sınıf varsa kimse alt sınıf olacak çünkü ben do not gibi soyut etiket ve genellikle karışıklık ekler. Ben daha çok statik bir sınıf değil, soyut denilen olurdum.