Aslında paket program değilde, kiralama(Multi Tenant) mantığı web tabanlı yazılımlar için en uygun yöntemlerdendir. Düşündüğünüz sektörle alakalı, Türkiye'deki en çok müşteriye sahip e-ticaret altyapısı sağlayısıcı(kendileri öyle diyor) 'İdeasoft' kiralama ile çalışmaktadır. Neredeyse Türkiye'deki büyük bütün firmalar bu şekilde çalışıyor.
Sorularınıza gelecek olursak;
1. Anahtar kelimelerimiz "PHP Obfuscator"dır. Eskiden en popüleri ioncube idi ama en son 5 yıl önce kullanma ihtiyacım olmuştu, şu anda ne durumdadır bilemiyorum. Bir çok yerde okuduğum kadarıyla Obfuscate işleminde genel kanı %100 güvenli olmadığıdır.
http://www.ioncube.com/
https://stackoverflow.com/questions/7549433/how-do-you-hide-your-php-source-code
2. Temalarınızı ayrı klasörlerde tutarak ve bir middleware veya service provider içerisinde uygulama yaşam döngüsünün başında ilgili klasörü ayarlayarak seçilen temayı gösterebilirsiniz. Temayı session'da, request headerda veya dilediğiniz bir yerde tutarak view dosyalarınızı çağırmadan önce ilgili klasörü buradan alarak kullanabilirsiniz. "view($tema.'.index')"
3. - Kiralama mantığında lisanslama olayı yoktur. Abonelik şeklinde ilerler. En güvenli yöntemlerden biridir, çünkü her şey sizin elinizdedir.
- Lisanslamak istersenizde; örneğin kodları verip bir yılda güncelleme sattığınızı var sayarsak. Kullanıcılara bir token(lisans anahtarı verip), github reposundan veya sizin yazdığınız apiden güncellemeleri çekerken o kod(token, lisans anahtarı) ile kontrol edebilirsiniz.
- Ya da Uygulamanın içerisinde bir anahtar(lisans) ve lisans bitiş tarihi belirlersiniz(Ioncube'de kodlar şu tarihe kadar çalışsın diyebiliyordunuz), .env gibi bir yerden müşteriye onu ayarlatırsınız yada ayarlarsınız. Anahtarı service provider yada middleware ile yine uygulama yaşam döngüsünün başlarında kontrol eder, uyup uymamasına göre ilerlersiniz. Burada önemli olan kodlarınızın içerisinde kontrol edeceğiniz anahtar'ın bulunduğu php dosyaları kesinlikle "Obfuscate" işleminden geçirilmelidir.
4. - Xml export import işlemleri "Drop Shipping" yapan yada "Drop Shipping" yapacak müşterileri ile stok bilgilerini paylaşmak isteyenler tarafından kullanılır.
- Ayrıca stok verilerinin birçok sitede senkron ilerlemesi istenen farklı durumlarda da kullanılabilir. Örn: Pazaryeri çözümlerinde stokların e-ticaret sitesinden alınması için entegrasyon hazırlarken ihtiyaç duyulabilir.