PHP ithalat fonksiyonları

2 Cevap php

Ben anında fonksiyonlarını almak için en iyi pragmatik bir yaklaşım bulmaya çalışıyorum ... açıklamama izin verin.

Ben bu dosyaları vardır functions adlı bir dizin var ki:

array_select.func.php
stat_mediam.func.php
stat_mean.func.php
.....

Vb,) (,) (array_shift (içinde tanımlanmış bir işlevi vardır) her dosya yüklemek ve sadece böyle array_pop gibi bir iç php fonksiyonu .. gibi kullanmak: Ben istiyorum

Bence bu çok iyi bir çözüm olmasa da paylaşılan / bayi hosting Eğer PHP kurulumunu yeniden derlemek olamaz çünkü derlenmiş kullanıcı .. PHP yüklemesinin parçası olarak işlevlerini tanımlanan (ki ben şimdi tekrar bulamıyorum) bir öğretici tökezledi kez .

Bana göre X adında bir fonksiyon, (per se aynı özelliğe sahip olmasa bile) aniden iç php fonksiyonları parçası ise PHP / diğer uzantıları gelecekteki sürümleri ile çatışmaları olmasını istemiyorum, yani ben don ' t PHP, çünkü bu bir ölümcül hata atmak ve sefil başarısız istiyorum.

Yani aklınıza gelebilecek en iyi yöntem o log dosyalarını izlemek için kolay, böylece böylece aksi takdirde işlevi tanımlamak, bir uyarı atmak) bir işlev function_exists (kullanılarak tanımlanır olmadığını kontrol etmektir. Ancak muhtemelen bir çok sahip çevirmek olacaktır / ben gerçekten sevmiyorum böyle bir işlevi, gerek diğer dosyaları deyimi gerektirir içerir. Ya da belki, her *. Func.php dosyası ve include_once üzerinde dizin ve döngü okuyun. Bu biraz çirkin bulmak olsa.

Soru, hiç böyle bir davayı ele bazı kaynak kodunun tökezledi mi? Nasıl hayata geçirildi? Hiç benzer bir şey yaptı mı? Ben mümkün olduğunca fikirler gerekir! :)

2 Cevap

Eğer böyle bir şey koparmak için tek bir yol sınıflara bu işlevleri koymak ve sonra __autoload işlevini ayarlamak için. Eğer bu çözüm daha sınıflarında işlevleri sarma karşı iseniz, muhtemelen sizin için geçerli değildir. Bu benim fonksiyonları namespace ve aralarında özel yöntemleri paylaşmak için izin verir çünkü Şahsen ben seviyorum.

Öncelikle buna benzer senin özdevinimli_yükle işlevini ayarlamak. Kendi tarzınıza uygun adlandırma ayarlamak, ve muhtemelen bazı hata işleme tanıtmak isteyeceksiniz, ama bu sadece karşısında temel fikir elde etmektir.

function __autoload($class_name){
     require_once(strtolower("library/$class_name.class.php"));
}

Sonra her yerde kodu ne olursa olsun kapsam böyle bir şey yapabilirsiniz.

arrayFunctions::doStuff($myArray);

PHP otomatik olarak "library / arrayFunctions.class.php" eklemeyi deneyin ve arrayFunctions sınıfında "DoStuff" denilen bir yöntem arayacaktır.

Ben bu fikri ile sorunları var. Tek bir işlev eklemek için dosya sistemini vurmak saniyede sizin maksimum olası taleplerini düşürülmesi açısından çok pahalı.

Bu yük / tek bir dosya (statik sınıf?) Beş fonksiyonları ayrıştırmak ve sadece ikisini iki fonksiyonları için (bir stat çağrısı) ziyade yük iki dosya (iki istatistik aramalar) kullanmak genellikle çok iyidir.

Hangi beş fonksiyonları gerektiğinde tabii ki daha da kötü hale gelir.