Nasıl OOP farklı dosyalarda saklanan sınıfları 'include' yönetmek yok

9 Cevap php

Ben cepten geliştirme içine taşımak için çalışıyorum ve web'de arama ve sınıfları nelerdir ve nasıl birbirlerinden miras ne hakkında sadece çok temel bilgi bulma bıktım burada yönelmeyi - that Anlıyorum.

Ne kadar henüz anlamıyorum bütün bu sınıflar farklı dosyalarda saklanabilir nasıl bir klasör yapısı etrafında doted ve henüz sınıfını kullanmak için yapmanız gereken sadece kod adını söz olduğunu. Bu nasıl tam çalışır?

Ve ilgili bir not, eğer herkes iyi bir kitap ya da OOP iyi bir temel (tabanlı tercihen php) ben çok minnettar olurum sağlayacak çevrimiçi öğretici tavsiye edebilir.

9 Cevap

Teknoloji cevap PHP Autoloading.

Uygulama cevap şudur:

Yaygın olarak kullanılan bir yöntem, klasör yapısına ilişkin sınıfların isimleri ile ilgisi yoktur. Orada makaleleri var, ama burada kısa bir özeti:

Lütfen özdevinimli_yükle kodunuzu kurarken, sınıf adını alır ve slashesle çizgi değiştirin. Bu şekilde klasörlerde sınıfları organize edebilirsiniz.

Örneğin:

Sınıfadı: Database_Provider_MySQL

Dosya: Veritabanı / Provider / mysql.php

Yani autoload, sen, gelen classname alırdım slashesle çizgi değiştirin. Sonra bu özel dosyayı içerir.

Bu başarmak için çalışıyoruz ne ulaşır, sadece bunun yeni bir örneğini oluşturarak bir sınıf yükleyebilirsiniz. Sen bu sınıflar için include deyimini kullanmak zorunda kalmazsınız.

Eğer 6 + düzeyleri ile sona nereye derin gitmek değil hatırlıyorum. I 3 ile 5 arasında bir en iyi olduğunu düşünüyorum.

Ayrıca, bu (Java benzer) Dosya başına sadece 1 sınıf tutmak gerektirmez. Rahatsız edici görünebilir rağmen, yerleştirme kodu çok daha kolay hale getirir.

PHP otomatik olarak yapmak bazı çağrı dayalı dosyaları yüklemek için işlevselliğe sahiptir. PHP: Autoloading Objects sizin kesin kaynaklar konuda olduğunu.

PHP'nin include_path yapılandırma ayarı ne dizinleri dosyaları bakmak PHP söyler.

Eğer böyle bir şey yaparsanız:

<?php  include 'MyClass.php'; ?>

Sonra PHP 'MyClass.php' için geçerli dizini arar ve sonra da dosyayı bulamazsa include_path herhangi dizinleri arar. Birçok sınıf kitaplıkları böyle bir şey yapın:

<?php

// Set the ini page to the base package directory
ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . dirname(__FILE__));

// Now, in all of your sub-directories, you can still do things like this: 
include 'Subdirectory/Anothersub/AnotherClass.php';

// Now use the class
$obj = new AnotherClass();

?>

Bu ileri otomatik yükleme ile basitleştirilmiş olabilir: http://us.php.net/autoload

Diğer kütüphaneler, her sağ taban paket dosyasında yarasa kapalı kullanımını dosyası içerir, böylece tüm bu sınıfların hemen kullanılabilir.

Farklı diller / çerçeveler bunu farklı şekillerde yapabilirsiniz, ama önemli bakmak ve / veya nereye (tekrar bu nasıl dil / framework bağlıdır) bakmak için belirtebilirsiniz varsayılan yerlerde yerleşik bir liste var aşağı kaynar. Ben soru php olarak etiketlenmiş biliyorum ama soru özellikle php yüzden ben biraz daha genel bir cevap vermek istiyorum düşündüm söz etmez

Ben (aşağı tüm istediğiniz, ben! Bir gün biz ;-) kabul edilecektir umurumda değil bana oy PHP büyük (az) fanatiğiyim rağmen ben, bir açıklama var, PHP gerçekten aşağı yürümek istiyorum yol değil OOP öğrenme.

PHP de, farklı şeyler yapar. Farklı iyidir, beni yanlış anlamayın, ben farklı seviyorum, ama aynı zamanda sıradışı olduğunu. Sıradışı, ayrıca iyi, Google için neredeyse eşanlamlı, bana sorarsanız, ama biz sıradışı bir dünyada yaşamak istemiyorsanız! Sen sadece birine kadar yürümek ve demek değildir; "Hey, ben OOP biliyorum, ben PHP öğrendim". Bu kafiye olabilir, ama insanlar sadece ciddi sonradan sizi almayacağız. Bana nedenini sorma, ancak sarı muz gibi doğrudur etmeyin. Ben orada oldum.

Eğer geleneksel OOP öğrenmek istiyorsanız, bu yüzden Java deneyin. Geldikleri gibi (kötü ne iyi ne olduğu) gibi konvansiyonel bulunuyor.

Ben dürüst bir 20-cümle yazılan pek çok kez kendimi yedeklenen asla. Gotta olsa ma 'rep izle. :-D

Benim araştırma çabaları duvara vurduğunda son derece yararlı mevcut koduna bakmak buldum. Okudu ve öğrenilebilir mükemmel bir PHP kodlama uygulamalarını takip komut, paketler, çerçeveler, ve uygulamaları bol miktarda vardır. Birkaç iyi olanları işaret SO çeşitli sorular var.

Benim favori şimdiye kadar Zend Framework olmuştur.

And on a related note, if anyone can recommend a good book or online tutorial which will provide a good foundation in OOP (preferably php based) I'd be very grateful.

Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development

Ne açıklayan konum zatında nesne yönelimli programlama ile ilgisi yoktur. Bu bazı özel dillerin sadece bir özellik. Bu dilleri (örneğin, sınıf foo.bar.quux foo / bar / quux.py bazı standart konumda olması gerekebilir) dosyaları nasıl depolandığı için kongre çeşit uygulayarak bunu.

http://www.headfirstlabs.com/books/hfooad/

Öncelikle Object Oriented Analizi ve Tasarımı baş. Head First basit ama şok edici yararlı örneklerle harika bir kitap serisidir. Size bilgi sunma Onların bütün yolu harika. Onlar bile lutfen bazı bazı nesne yönelimli php kitapları olabilir!