Nasıl 15 statik PHP sınıfları birlikte çalışmak yapabilirim?

3 Cevap php

Ben yaklaşık 15 sınıfları olan bir kişisel PHP uygulama var. Bir sayfa çalıştırıldıktan Her sınıf sadece bir kez başlatılır. : Başka bir deyişle, sayfa yükler

  • 15 sınıfları yüklenir ve her sınıf dosyası yüklenir alır gibi, ben sınıfının bir örneğini oluşturmak vardır.
  • (Şimdiye kadar) tasarlanmıştır uygulama böylece sistemdeki her değişken bir sayfa oluşturma sırasında bir devlet vardır. Ben bu her erişmek için küresel değişkenler kullanmak
  • Bu 3 yıl boyunca iyi çalıştı, ama ben tek geliştirici ve kendi kod goo ayıklayıcı duyuyorum oluyor.

Ben Singletons ile tüm sorunları duydum, ve ben her yerde, "küresel $ var" yapmaktan nefret ediyorum. Nasıl bu tür yapının dışında ve bir şey geliştiriciler içine isterdim çekmek için söyle lütfen. Ben yazılımı doğru şekilde yazmak istiyorum, ama yürütme bu tür için çok basit bir kod çerçeve bulmak için görünmüyor olabilir.

Oh - ve ben bir MVC framework çözüm aramıyorum. Ben 15 dersleri almak konusunda düşüncelerinizi sevgi ve birlikte çalışma için uygun bir çerçeve içine bunları açacak. Ben de bu şekilde geliştirmek için ne kadar "aptal" bir eklem isterim.

3 Cevap

Eğer tüm sınıfları için erişmesini istediğiniz değişkenleri varsa, belki örneğin, gibi bir şey miras deneyebilirsiniz

class Settings
{
    var $page_name = "My Page";
    var $database_name = "my_db";
}

ve sonra tüm sınıflar gibi bu sınıf miras izin

class Page extends Settings
{
    var $id = 0;
    var $template = "";
    function __construct() {}
}

$page = new Page();
echo $page->page_name;

onlar ne ise ya da, sabitler gibi değerlerini tanımlayabilir

define("PAGE_NAME", "My Page");

her yerde PAGE_NAME erişim olurdu

Ben bu sadece a yolu, doğru yol olduğunu söyleyerek hiçbir şekilde değilim. :)

Php uygulamalar geliştirerek zaman ben aynı sorunu koştu. Ne yapıyor sona erdi statik yöntemleri ve statik değişkenlerin sınıflar oluşturarak oldu. Aslında onlar biraz isim alanları gibi çalışır. Bunun ne kadar "standart" Emin değilim ama pratikte çok iyi çalışıyor.

Diğer tek seçenek soruda bahsettiğim senin gibi singleton'ununu oluşturmak olacaktır, ancak yapıcı ve deconstructors gibi bir şey gerekmedikçe imho bu overkill olabilir.

Örnek:

<?php
class MyClass{
    private static $my_static_variable;

    static public function myStaticMethod(){
        return self::$my_static_variable;
    }
}

Daha sonra küresel kullanmaya gerek kalmadan bu her yerde kullanabilirsiniz:

function foo(){
    MyClass::myStaticMethod();
}

class Bar{
    public function myBarMethod(){
        MyClass::myStaticMethod();
    }
}

Ben aynı şeyi kendime düşünüyor ve tek sonuç MVC framework açık çatlak ve inşa nasıl görmek için bir yol gelebilir.

Belirtildiği gibi başka bir şey, tek bir süper sınıf ile başlar ve oradan aşağı miras vardır.

Yani bir sınıf nesnesi var, o zaman ve böylece bir şey içine miras ve.