Ad alanları yalnızca otomatik yükleme sınıfları için değildir. Ayrıca adlandırma çatışmalarını önlerler. Aslında, bu onların birincil amacı.
Diyelim ki User
uygulamanızın kullanıcıları hakkında bilgi depolamak için adlı bir sınıfa ihtiyaç duyan bir projeniz var , ancak bir eklenti de User
bilgileri depolamak için adlandırılmış (farklı) bir sınıf kullanıyor . Ad alanları, sınıfınızı bir ad alanı (örneğin, MyApp
) içinde oluşturmanıza ve eklentinin başka bir ad alanı (örneğin, CoolPlugin
) kullanmasına izin verir . MyApp
Boşluktaki kod sadece referans verebilir User
(örn. new User();
) Ve böylece CoolPlugin
boşlukta kodlama yapabilir ; her biri beklenen sonucu alır. Başka bir ad alanından kod kullanmanız gerektiğinde, kodun önekini eklemeniz yeterlidir . Örneğin, CoolPlugin
boşluktaki kod User
sınıfa MyApp
üzerindennew \MyApp\User();
Alternatif olarak, her sınıf ve gibi her yerde karmaşık bir ada ihtiyaç duyar . Ad alanları, çoğu zaman işleri basitleştirmenizi ve çakışmaları her zaman adlandırmaktan kaçınmanızı sağlar.class MyApp_User
class CoolPlugin_User
Düzenleme: "İkisi arasında herhangi bir performans farkı var mı?"
Anlamlı değil, hayır. Ben karşılaştırmak değil, ama muhtemelen nanosaniye düzeyinde bir fark var. Bununla birlikte, süper küçük performans ayarlamaları için kod kalitesinden ödün vermek iyi bir strateji değildir, bu nedenle ad alanlarını dikkate almadan kullanmalısınız. Benzer türden karşılaştırmalar için PHPbench.com ve bu StackOverflow cevabına bakınız .
Bu tür bir bağlamda mikro optimizasyon konusunda endişelenmeden önce kodunuzun inanılmaz derecede sıkı ve inanılmaz derecede zaman duyarlı olması gerekir (yüksek frekanslı ticareti veya nükleer reaksiyonları yönetmeyi düşünün). Eğer gerçekten bu kadar zamana duyarlıysa, PHP gibi yorumlanmış diller değil, muhtemelen c ve hatta derlemede kodlama yapmalısınız .