Bir yöntemde dosyaları içerir?

3 Cevap

i benim için tüm dosyaları içeren bir sınıf olmasını istiyorsanız.

örn.

Loader::loadZend // loads all zend libraries
Loader::loadSymfony // loads all symfony components

i bir yöntem bir dosya eklerseniz, bu genel olarak kullanılabilir hale gelir?

o çalışmıyor gibi görünüyor.

belki ben yanlış bir şey yapmış ya da bu geçici bir çözüm var mı?

teşekkürler

3 Cevap

Şu http://uk.php.net/manual/en/function.include.php (emphasis mine)

Bir dosya dahil edildiğinde, içerdiği kod oluşur dahil edildiği satırın değişken kapsamını devralır. Herhangi bir variables çağıran dosyanın bu hat mevcut will be available within the called file, from that point forward. Ancak, all functions and classes dahil dosyasında tanımlanan have the global scope.

Kerede Zend, Symfony veya ne olursa olsun yükler all sınıfları kötü bir fikir olduğunu bir yükleyici sahip. Hem böylece tüm yapmanız gereken dahil yolu ve ardından spl_autoload_register çerçevenin kendi autoloader üzerine kütüphaneler kullanılabilir hale, kendi autoloader var.

Hiçbir küresel kapsam değişkenler tanımlanmış ise, ince olmalıdır. Aksi takdirde, globallerinin kaybolur.

Örneğin,

a.php:

<?php
$a = "global a";
class c {
  public $b = "member b"; 
}
?>

b.php

<?php
function inc() {
include 'a.php';
}

inc();

echo $a;

$class = new c;
echo $class->b;
?>

Eğer b.php çalıştırırsanız, göreceksiniz $ a gitti ve sınıf c veya herhangi bir işlev hala kullanılabilir olacak.

If you just include a class inside another class it is only available in the class you inserted the include.
So the solution is to create an autoloader that automaticly includes the classes needed on demmand. Here you have the info you need:

http://php.net/manual/es/language.oop5.autoload.php

Bu PHP5 OOP için temel programlama.

DÜZENLEME

Bir dosya hakkında soruşturma görünce. Ne. (Php fonksiyonları ile işlenecek) dosyası, yalnızca dünya çapında değil tüm uygulama / web sitesi için kullanılan denir fonksiyonu / içinde kullanılabilir olacaktır.