PHP 5 Başka bir sınıfa Class Dahil

3 Cevap

Ben benim diğer tüm sınıflara dahil etmek isteyen aşağıdaki dersim var, ama ben eklemek veya include_once komutları kullandığınızda benim PHP sayfası başarısız.

<?php
/**
 * Configuration class
 *
 * @author LennieDG
 * 25 July 2009
 */
class CConfig
{
    public static final $DB_HOST = "...";
    public static final $DB_NAME = "...";
    public static final $DB_USERNAME = "...";
    public static final $DB_PASSWORD = "...";
}
?>

3 Cevap

Siz özellikleri için final kullanamazsınız. Sadece sınıflar ve yöntemler için izin var.

Düzgün gelişme ise error_reporting ve display_errors kurdum emin olun.

Sadece bir sidenote:

Özellikleri PHP nihai ilan edilemez. Sadece sınıflar ve yöntemler nihai ilan edilebilir. Bu PHP kullanarak elde etmek için, sınıf sabitleri kullanmanız gerekir.

PHP5 - final anahtar: http://us.php.net/manual/en/language.oop5.final.php

PHP5 - class sabitleri: http://us.php.net/manual/en/language.oop5.constants.php

Lütfen tüm özellikleri statik oldukları yaparak her yerde ulaşılabilir

CConfig::$DB_HOST

Aynı sorunların birçok küresel değişken kullanarak sahip olduğu Ama bu, tavsiye edilmez. Başka bir seçenek değerleri statik yapmak değil ve (bu bağımlılık enjeksiyon olarak bilinir) ihtiyacı herhangi bir sınıf için bir örneği geçmektir.

$config = new CConfig();

// Either via the constructor
$obj = new OtherObject($config);

// or a setter
$obj->setConfig($config);

Bu test çok daha kolay hale getirir (Eğer CConfig nesneyi alay gibi) ve diğer nesneleri daha yeniden yapar. Bu size rağmen kullanmak niyetinde yerde CConfig örneğine erişim olması gerekir demek. Bu kayıt defteri desen, ya da bir bağımlılık enjeksiyon konteyner (ama belki biraz ileri gidiyor) gibi bir şey kullanarak kolları olabilir.