博客资讯

Blog资讯

Joomla开发最佳实践

当开发调用文件时,不要使用DS或DIRECTORY_SEPARATOR常量。这已经不再需要了,php.net上有所说明。

不依赖于register_globals。这是一个很高的安全风险的函数,这个特性在PHP 5.3中被弃用,在5.4中被删除。

不要直接访问$ _GET、$ _POST、$ _REQUEST、$ _FILES和$ _SERVER superglobals。使用JInput(通常是:JFactory::getApplication()- >输入)。JInput过滤输入,帮助您轻松编写更安全的软件。

不要编码SQL查询,也不要将未泄漏的原始数据包含进去。总是使用JDatabase / JDatabaseQuery。它就像JFactory::getDbo()- > getQuery(true)一样简单。

不要使用任意的入口点,即。必须在Joomla之外访问的php文件!,直接来自网络。通常用于支付处理程序和图像调整器,这种做法非常不安全,并且非常不受鼓励。使用一个Joomla !组件或系统插件。

不要重新发明轮子。如果有一个Joomla !在你自己动手之前,先试着使用它。很有可能,核心课程已经足够好了,而且测试也很好。

请为您的表名使用合理的前缀。如果您的组件被称为com_foobar,那么它的表将遵循命名模式:

 // 正确的方式
 #__foobar_something

 // 错误的方式
 #__fbr_something 

 // 错误的方式
 #__something

使用Joomla的预发布版本测试您的扩展!和Git仓库的“发布”分支。确保使用您的扩展用户可以安全更新Joomla !是你的责任。

为您的扩展提供文档。即使是一段普通话不标准的视频也比什么都没有好。

使用JText来翻译扩展的输出,而不是编码文本。绝大多数的Joomla !用户不是以英语为母语的人,他们会感谢您的这些规范。

注释你的代码。不只是为了那些将来要改你文件的开发者,还有将来你自己的查询。

在真实的使用条件下,使用真实的数据集测试代码。你可能会对你的发现感到惊讶。

我的组件的JavaScript、CSS和图像文件应该放在哪里呢?

在根目录中可以看到/media文件夹,保存了所有媒体。

您可以在根目录中看到保存所有资产的通用媒体文件夹。

这意味着,当在XML安装清单中,如果将文件放入< media >标记而不是<文件>标记,则它们将被发送到JPATH_ROOT / media文件夹。如果您给它< media destination="com_foo" >,那么它将把文件放在JPATH_ROOT /media/ com_foo中

在某些情况下,你有一个组件,我们会说com_foo,然后你会有几个模块和com_foo一起。为了这个例子,我们将其命名为mod_foo_1,mod_foo_2和mod_foo_3。如果三个模块都是相同的,并且它们依赖于组件,那么就没有理由为三个模块打包媒体元素。做事情的最好和最合理的方法是把它们放在一个适当的名称空间的中心位置。

通过将媒体存储在媒体文件夹中,可以使模板覆盖模板覆盖,而不需要修改您的扩展所附带的文件,从而导致在更新期间丢失这些定制。通过在JHtml类中使用图像、脚本和样式表方法来加载媒体,而不是直接用JDocument或硬编码标签加载媒体,这就可以轻松地覆盖扩展的媒体,这样就可以将其输出定制到它所使用的站点上。

在哪里存放组件生成的文件?

这取决于这些文件的性质。有两个决定因素:

文件的持久性:临时的、缓存的或永久的。临时文件是应该在使用后立即删除的文件,在页面加载完成之前。缓存文件将被存储在服务器上一段时间,直到它们的截止日期为止。临时和缓存文件都可以在没有预先警告的情况下被删除,并且您的代码必须预料到这一点。另一方面,永久文件则不是要自动删除的。

文件的处理:可访问的web或无法访问的web。web可访问文件是那些必须能够通过web访问的文件,例如,当您在web浏览器中输入它们的URL时。web无法访问的文件是那些不能通过web访问的文件。

有以下几种可能:

  • 暂时的,网站无法访问。使用Joomla! 临时目录。您可以通过JFactory::getConfig()- >get('tmp_path ')获得它。请注意:固化编码路径为JPATH_ROOT'/tmp '是一个坏习惯,你不能这样做。
  • 暂时的,web访问。这是不能接受的!根据定义,临时文件是无法访问的。也许你的意思是“缓存”而不是“临时的”?
  • 缓存,网页无法访问。使用定义的Joomla !缓存目录。使用JPATH_CACHE常量找到它的位置。请注意,缓存目录可能与站点的前端和后端不同。
  • 缓存,web访问。使用媒体文件夹的子目录。有关Javascript和CSS文件的部分,这是一样的。
  • 永久性的,网站无法访问。使用扩展主目录下的文件夹。如果你真的想要从网络上完全无法访问的文件,记得要放置一个.htaccess文件,或者更好的是,让用户可以选择在站点的根之外使用目录。
  • 永久性的,web访问。使用媒体文件夹的子目录。有关Javascript和CSS文件的部分,这是一样的。

这适用于组件处理的所有文件,包括您的代码生成的文件,以及组件上传/生成的用户文件。

最后,如果您想管理日志文件,建议使用JLog类,而不是滚动您自己的解决方案。

考虑Javascript 

当您使用addScriptDeclaration在Joomla中添加内联Javascript时!页面必须考虑到代码与其他运行在同一页面上的其他扩展的Javascript交互。良好的实践包括:

  • 使用分号和换行结束Javascript。如果两者都丢失了,那么您的代码就会成为Javascript错误的来源,而另一个开发人员的代码在您的代码之后使用addScriptDeclaration。
  • 确保Javascript代码有效,不会抛出错误。代码中的错误将在无法操作后呈现任何代码。
  • 对危险的代码使用try / catch块。如果您不确定是否有一些代码是有风险的,那么就用try / catch块来包围它。
  • 在视图模板中加载您的内联Javascript,而不是视图类(视图. html)。php文件)。最可能的情况是,当站点集成商使用模板覆盖时,DOM会有所不同。

 

说点什么...
取消
你是一个访客 ( 注册 ? )
作为一个访客
加载评论... 注释将在之后刷新 00:00.

第一个发表评论

joomlass-logo31.png

Search