2008-11-12 22 views
7

Dağıtmak istediğim küçük bir PHP uygulaması yazdım. En iyi uygulamaları araştırıyorum, böylece en çok webhost'larda en az güçlükle kurulabilir.Küçük bir PHP uygulamasını dağıtma

Kısaca: İnsanların bir parola ile oturum açtıklarında dosyaları karşıdan yüklemelerini sağlayan basit bir araçtır.

Yani benim sorular şunlardır:

1) Nasıl yapılandırma değerlerini işlemek gerekir? Bir veritabanı kullanmıyorum, bu yüzden bir yapılandırma dosyası uygun görünüyor. Diğer php uygulamalarının (ör. Wordpress) kullanımının tanımlandığını biliyorum, ancak bunlar global ve potansiyel olarak isimlerin çakışması ihtimali var. (Global değişkenler aynı problemi de açık bir şekilde ortaya koymuştur.) PHP'de yerleşik olan "ini" dosya mekanizmasına baktım. Sadece en üstteki yorumlara izin verir - böylece her bir ayarı kolayca ekleyemezsiniz - ve "php -f" ile sözdizimini doğrulayamazsınız. Diğer seçenekler?

2) Nasıl şablonlanır? Uygulama bir form pompalamak gerekiyor. Muhtemelen bir hata mesajı ile. (ör. "Üzgünüm, yanlış şifre.") HTML formuna sahip bir sınıf değişkenim var, ancak bunun yerine harici bir şablon dosyasının kullanılmasına da izin ver (yapılandırmada belirtildi). Bazı önemli aramaları yapıyorum ve değiştirin - ör. Komut dosyasının adına% SCRIPT%, hata mesajını tutmak için% STATUS%. Bu, tekerleği yeniden icat etmek gibi bir şey hissettiriyor, ama Smarty gibi bir şablon sistemi de dahil olmak üzere çok fazla. (Ayrıca, bir şablon sistemi zaten olabilir.) Diğer seçenekler?

3) i18n - Sadece 3 ileti dizesi var ve gettext evrensel olarak yüklü değil. Bu üç dizge parametresini yapılandırma dosyasında yapmak çok kötü bir fikir mi?

4) Diğer çerçevelerle en iyi nasıl bütünleştirilir? Uygulamam tek bir sınıftır. Yani, sadece sınıfın nasıl çağrıldığını gösteren bir php betiğini ekleyebileceğimi düşündüm. Başka bir çerçeveye entegre etmek zorunda olan insanlar için bir başlangıç ​​noktası olacak, aynı zamanda kişiselleştirmeyle ilgilenenler için de iyi olacaktır. Makul?

5) GET/POST parametreleri - Bir sınıfın $ _GET ve $ _POST değerlerine bakması kötü bir form mu? İnşaat sırasında tüm değerler sınıfıma geçsin mi?

Teşekkürler.

cevap

7

Yapılandırma

Böyle bir php dosyasını kullanabilirsiniz

$config = (array) include 'path/to/config/file'; 

Ve çoğunlukla olarak sınıf dağıtmak planlıyorsanız diğer uygulamalarda bir bileşen, daha sonra sınıfınızın yapıcısına config dizini/nesnesini bir parametre olarak ekleyin ve ayrıntıları kullanıcıya bırakın.

böyle basit uygulama için şablonu

sizin açıklanan yöntem yeterli olacaktır. Birinin sınıfınızı her zaman genişletebileceğini ve çıkış yönteminizi kendi başına aşırı yükleyebileceğini unutmayın.

yapılandırma sadece overkill olarak depolayarak daha 3 değişkenler herhangi bir şey için, daha önce de belirtildiği gibi I10N

. yaptıklarını ve ne parametrelerin ihtiyaç vardır ne açıklamalarla

Entegrasyon

Comment her kamu yöntemi (veya daha iyi de koruma altındadır ve özel olanlar). Bunu bir örnekle birleştirirseniz, çoğu kullanıcı için yeterli olmalıdır. POST vs

GET

Sınıfınız şifreleri kullanır ve hatta GET yoluyla göndererek düşünmek? ;) Tarayıcı geçmişi, referer başlıkları vb. Düşünün - kullanıcılarınızın şifreleri orada görünür olacaktır. Pastör'e iyi tavsiyelerin yanında

+0

Bu yapılandırma stilini seviyorum! Şimdi bunu deneyeceğim. –

2
  1. Yapılandırma, sınıf örneklerine yerel olabilir mi? Ya da yapılandırma değerleri için sorgulamak için bir örnek oluşturabileceğiniz küçük bir sınıf oluşturabilir misiniz? Ayrıca, herhangi bir global varsayı uygulamanızın adıyla birlikte hazırlamanız, çakışmaları durdurmanın bir yolunu bulmalıdır.

  2. Templasyonunuz gerçekten basitse, kısa bir yazım yazın. İnsanların herhangi bir üçüncü taraf templateriyle karşılaştıkları sorunları savuşturmaktan daha kolay olacaktır. Ayrıca lisanslama sorunlarını basitleştirebilir. Zaten sahip oldukları şey hakkında endişelenmeye başlarsanız, hiçbir zaman bir şey bırakmayacaksınız. Çok fazla kombinasyon var.

  3. 3 dize için? Evet, aynısını config ile aynı şekilde yapıyorsun.

  4. Sınıfı nasıl kullandığınızı açıklayan bir intro ile birlikte iyi yorumlar.

  5. Sanmıyorum. Eğer rahatsız ederse

içine almaya başka şeyler vardır (yani güvenlik riski olabilir gerçi) oluşturduktan sonra, ilk verilen argümanlar kullanmak hiçbiri sağlanır GET/POST değerleri aramak için varsayılan argümanlar kullanabilirsiniz dikkate.Birçok kullanıcı paylaşılan ana bilgisayarlarda ve bunun sonucunda php.ini veya php sürümü üzerinde kontrole sahip değiller. Yalnızca olabildiğince sıradan özellikler kullandığınızdan emin olmanız gerekir.

bir örneği shorttags bazı ana etkin değil olmasıdır royal PİDE olabilir (eğer <?php ... ?> ve <?php echo "..."?> yerine <? ... ?> veya <?= "..." ?> kullanmak zorunda).

<?php 
return array(
    'option1' =&gt; 'foobar', 
    'option2' =&gt; 123, 
    //and so on... 
); 
?> 

Ve ana sınıfında

sadece kullanın::

2

:

  • kullanın <?php sadece
  • sen devre dışı bırakılabilir fonksiyonlarını kullanırsanız
  • , uygun olduğunda sağlamak için function_exists() kullanın. @missing_function(), PHP'nin hata yapmadan sessizce ölmesini sağlar.
  • php.ini aracılığıyla devre dışı bırakılabilecek/değiştirilebilen şeylere güvenemezsiniz. Farklı ayarlara uyum sağlamak için ini_get() kullanın.
  • magic_quotes etkinleştirilmişse, şerit yalnızca giriş kopyanızdan kesilir - genel dizileri değiştirmeyin! Bazı yalancı kodların güvenliği, mevcut olan bu eğik çizgilere dayanabilir.
  • Kullanıcıların, belgeleriniz/web sitenizden & kod kodunu dikkatlice kopyalayacağını umuyoruz.
+0

"Use " Bitiş etiketini atlayın, bir dosyanın son karakterleri olması gerekmiyor. –

+0

Bu kısa etiketlerin sorunlara neden olabileceğini - PHP dosyalarının hepsinin PHP olduğunu, bu yüzden büyük bir anlaşma değil. Ama '?>' Kelimesini atlatmak bana ne alır? (İstenmeyen fazladan boşluk ekleme riski az mıdır?) –

+0

Dosyanın sonunda beyaz alan çıktısı alma riski yoktur; bu, uygulamalarda daha sonra, örneğin oturum başlatmak için http başlıklarını göndermek istiyorsanız kötü olabilir. Tabii ki, bu sorunu çıktı arabelleği ile atlayabilirsiniz. –

İlgili konular