Background
Ben uzaktan hizmetlerin çeşitli (Yerel, FTP, WebDAV, SVN, SSH) dosya sistemi erişimi kolaylaştırmak olacaktır yardımcı sınıflar kümesi tasarım gerekir, ve ben çoğunlukla bir dilin bir "mükemmel" bir tasarım almak gibi olamaz bariyer - PHP belirli bir özellik için destek yoktu çünkü ben seçtim her tasarım yol kazınmış olduğunu hissediyorum.
Ben bu sinir bozucu buluyorum ve ben fikir bitti.
Requirements
FileSystem
için bir üs soyut bir sınıf veya arabirim her dosya sistemi tipi devralır. FileSystem
sınıf (ve alt sınıfları var) böyle bir 'hareket' gibi temel FS işlemleri uygulamak 'sürücü', böylece, 'kaldır' oluşturmak 've.
Bu Sürücü işlemleri sınıfı kullanıcıya maruz kalmamalıdır, bunun yerine, FileSystem
Ayrıca istek üzerine dosya bilgileri kayıtlarını alır bir fabrika.
Bir dosya da soyut bir sınıf veya arayüz File
ve Directory
, bir FileSystem
altsınıfın uygulamacılarıdır olabilir veya olmayabilir alt sınıfı dayanmaktadır. Bir FileSystem
sınıfının Kullanıcılar bir File
(SshFile
ve SvnFile
aynı çalışması gerekir) türü hakkında değil 'bakım' yapmak.
File
(ve Directory
) sınıfı kullanıcı {[içinden elle yapmak mümkün olmadan bazı şekilde oluşturulan dosya sistemi sürücüsü konuşmak biri olmalıdır ( 2)]} sürücüsü.
What I have tried
Doğal olarak ben FileSystem
soyut bir sınıf, daha sonra File
sınıfı kod ilerledi ve PHP hiçbir friend
desteğine sahip çıkıyor, yani {[(1)] yapılan } FileSystem
'nin korumalı sürücü yöntemlerine erişimi olamaz.
Kazınmış var Başka bir fikir, bir sınıf içinde bir sınıf oldu - FileSystem
ve FileSystem::File
- PHP sınıfları iç içe değil.
Divide FileSystem
FileSystemDriver
ve FileSystemFactory
içine, ama aynı orijinal sorun haline beni alır.
300 Reputation points in bounty reward
Kapsülleme için gerekli programlama araçlardan PHP'nin olmaması için orijinal bir fikir bir çözücüye.