Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
分发一个小型PHP应用程序_Php_Distribution - Fatal编程技术网

分发一个小型PHP应用程序

分发一个小型PHP应用程序,php,distribution,Php,Distribution,我编写了一个小的PHP应用程序,我想发布它。我正在寻找最佳实践,以便能够以最小的麻烦将其安装到大多数Web主机上 简单地说:这是一个简单的工具,让人们在使用密码登录后下载文件 因此,我的问题是: 1) 我应该如何处理配置值?我没有使用数据库,所以配置文件似乎是合适的。我知道其他php应用程序(例如Wordpress)使用defines,但它们是全局的,并且名称可能会冲突。(显然,全局变量也有同样的问题。)我研究了PHP中内置的“ini”文件机制。它只允许在顶部添加注释,因此您无法轻松地对每个设置

我编写了一个小的PHP应用程序,我想发布它。我正在寻找最佳实践,以便能够以最小的麻烦将其安装到大多数Web主机上

简单地说:这是一个简单的工具,让人们在使用密码登录后下载文件

因此,我的问题是:

1) 我应该如何处理配置值?我没有使用数据库,所以配置文件似乎是合适的。我知道其他php应用程序(例如Wordpress)使用defines,但它们是全局的,并且名称可能会冲突。(显然,全局变量也有同样的问题。)我研究了PHP中内置的“ini”文件机制。它只允许在顶部添加注释,因此您无法轻松地对每个设置进行注释,也无法使用“php-f”验证语法。其他选择

2) 如何处理模板?应用程序需要输出一个表单。可能有错误消息。(例如,“对不起,密码错了。”)我有一个带有HTML表单的类变量,但也允许使用外部模板文件(在配置中指定)。我执行一些简单的搜索和替换-例如,将%SCRIPT%替换为脚本名称,%STATUS%以保存错误消息。这感觉有点像是重新发明了轮子,但包括Smarty这样的模板系统太过分了。(另外,他们可能已经有了一个模板系统。)其他选项

3) i18n-只有3个消息字符串,而且gettext似乎没有被普遍安装。仅仅在配置文件中设置这三个字符串参数是一个坏主意吗

4) 如何最好地与其他框架集成?我的应用程序是一个单独的类。所以,我想我可以包括一个php脚本,它显示了类是如何被调用的。对于那些不得不将其集成到另一个框架中的人来说,这将是一个起点,但对于那些对定制不感兴趣的人来说,这也很好。合理吗

5) GET/POST参数-类查看$\u GET和$\u POST是否不好?在构建过程中是否应将所有值传递给我的类

谢谢

  • 配置可以是类实例的本地配置吗?或者您可以创建一个小类,您可以创建一个实例来查询配置值吗?另外,使用应用程序的名称预先设置任何全局变量应该可以在某种程度上防止冲突

  • 如果你的模板非常简单,只需写一个简短的模板。这比试图避开人们与任何第三方模板制作者之间的问题要容易得多。它还可以简化许可问题。如果你开始担心他们已经拥有的东西,你永远不会发布任何东西。组合太多了

  • 三根弦?是的,按照你处理配置的方式来做

  • 自始至终都有很好的评论,其中有一篇介绍,解释了你是如何使用这门课的

  • 我不这么认为。如果它困扰您,您可以先使用默认参数来使用给定的参数,然后在没有提供GET/POST值的情况下搜索GET/POST值(尽管这可能存在安全风险)

  • 还有其他事情需要考虑。很多人都在共享主机上,因此无法控制他们的php.ini或php版本。您需要确保只使用尽可能普通的功能

    例如,某些主机上未启用短标记(您必须使用
    而不是
    ),这可能是皇家PITA。

    配置 您可以使用如下所示的php文件:

    <?php
    return array(
      'option1' =&gt; 'foobar',
      'option2' =&gt; 123,
      //and so on...
      );
    ?>
    
    如果您计划主要将类作为组件分发到其他应用程序中,那么只需将config array/object作为参数放入类的构造函数中,并将详细信息留给用户即可

    模板 对于这样简单的应用,您描述的方法应该足够了。记住,一个人总是可以扩展你的类,并用他自己的方法重载你的输出方法

    I10N 如前所述,对于3个变量来说,除了将它们存储为config之外,任何其他方法都是多余的

    整合 对每个公共方法(或者更好的是受保护的和私有的方法)进行注释,解释它们的作用以及需要哪些参数。如果你结合一个例子,对大多数用户来说应该足够了

    投递 您的类使用密码,您甚至想过通过GET?;)发送密码
    想想浏览器历史记录、参考标题等——你的用户密码会在那里可见。

    除了Krzysztof的好建议外:


    • 使用
      “Use”结束标记,如果它是文件的最后一个字符,则不需要它。我知道短标记可能会导致问题-我的PHP文件都是PHP,所以这不是什么大问题。但是省略“?>”能给我带来什么?(无意中添加额外空格的风险较小?)您不需要冒在文件末尾输出空白的风险—如果您想稍后在应用程序中发送http头,例如启动会话,这可能是不好的。当然,您可以通过输出缓冲绕过这个问题。
      
      $config = (array) include 'path/to/config/file';