簡體   English   中英

分發一個小型PHP應用程序

[英]Distributing a small PHP application

我寫了一個我想分發的小PHP應用程序。 我正在尋找最佳實踐,以便能夠以最小的麻煩安裝在大多數虛擬主機上。

簡而言之:這是一個簡單的工具,讓人們在用密碼登錄后下載文件。

所以我的問題是:

1)我應該如何處理配置值? 我沒有使用數據庫,所以配置文件似乎合適。 我知道其他php應用程序(例如Wordpress)使用定義,但它們是全局的,並且名稱可能會發生沖突。 (顯然,全局變量也有同樣的問題。)我查看了PHP內置的“ini”文件機制。 它只允許在頂部進行注釋 - 因此您無法輕松地對每個設置進行注釋 - 並且您無法使用“php -f”驗證語法。 其他選擇?

2)如何處理模板? 該應用程序需要抽出一個表格。 可能有錯誤信息。 (例如“抱歉,密碼錯誤。”)我有一個帶有HTML表單的類變量,但也允許使用外部模板文件(在配置中指定)。 我做了一些簡單的搜索和替換 - 例如%SCRIPT%到腳本的名稱,%STATUS%來保存錯誤消息。 這感覺有點像重新發明輪子,但包括像Smarty這樣的模板系統是過度的。 (另外他們可能已經有模板系統。)其他選擇?

3)i18n - 只有3個消息字符串,並且gettext似乎沒有普遍安裝。 僅僅在配置文件中創建這三個字符串參數是一個壞主意嗎?

4)如何最好地與其他框架集成? 我的應用程序是一個單獨的類。 所以,我想我可以只包含一個顯示該類被調用的PHP腳本。 對於那些不得不將其集成到另一個框架中的人來說,這將是一個起點,對於那些對定制不感興趣的人來說也是如此。 合理?

5)GET / POST參數 - 對於一個類來說,查看$ _GET和$ _POST是不好的形式? 在施工期間是否應將所有值傳遞到我的班級?

謝謝。

組態

您可以使用這樣的php文件:

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

而在主類中只需使用:

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

如果您計划將您的類作為組件分發到其他應用程序中,那么只需將config array / object作為參數放在類的構造函數中,並將詳細信息留給用戶。

模板

對於這種簡單的應用,您描述的方法應該足夠了。 請記住,總是可以擴展您的類並使用自己的輸出方法重載您的輸出方法。

I10N

如前所述,對於3個變量而言,除了將它們存儲為配置之外的任何東西都是過度的。

積分

評論每個公共方法(甚至更好的保護和私有方法),並解釋它們做了什么以及需要什么參數。 如果將它與示例相結合,對大多數用戶來說應該足夠了。

GET與POST

你的班級使用密碼,你甚至考慮通過GET發送它們? ;)考慮瀏覽器歷史記錄,引用標題等 - 您的用戶密碼將在那里可見。

  1. 可以配置為類實例的本地嗎? 或者你可以創建一個小類,你可以創建一個查詢配置值的實例? 在你的應用程序名稱前面添加任何全局變量也應該采取某種方式來阻止沖突。

  2. 如果你的模板真的很簡單,那就寫一個簡短的模板。 這比試圖抵御人們對任何第三方模板的問題要容易得多。 它還可以簡化許可問題。 如果你開始擔心他們已經擁有的東西,你將永遠不會釋放任何東西。 組合太多了。

  3. 3串? 是的,就像你處理配置一樣。

  4. 整篇文章都有很好的評論,介紹了如何使用課程。

  5. 我不這么認為。 如果它困擾你,你可以使用默認參數首先使用給定的參數,然后搜索GET / POST值(如果沒有提供)(盡管這可能存在安全風險)

還有其他事情需要考慮。 很多人都在共享主機上,因此,無法控制他們的php.ini或他們的php版本。 您需要確保只使用盡可能普遍的功能。

一個例子是在某些主機上沒有啟用短標簽(你必須使用<?php ... ?><?php echo "..."?>而不是<? ... ?><?= "..." ?> )可以是皇家PITA。

除了Krzysztof的好建議:

  • 僅使用<?php
  • 如果使用可以禁用的function_exists() ,請使用function_exists()以確保它們可用。 @missing_function()使PHP無聲地死亡而不記錄任何錯誤。
  • 你不能依賴可以通過php.ini禁用/更改的東西。 使用ini_get()來適應不同的設置。
  • 如果啟用了magic_quotes ,則只從輸入的副本中剝離斜杠 - 不要修改全局數組! 某些蹩腳代碼的安全性可能依賴於存在這些斜線。
  • 期望用戶盲目地復制和粘貼您的文檔/網站中的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM