小编Mat*_*ury的帖子

为什么MVC设计模式广泛用于网站开发?

我正在开发我对OOP设计模式的知识,并且我的主要关注点是网站开发和Web应用程序开发,我试图在这些领域中找到设计模式的示例,但似乎主要遇到Web框架(任何其他示例将不胜感激) .在我看来,大多数(所有?)基于PHP的框架似乎都使用MVC设计模式.由于这是最广泛使用的,因此认为它是这种类型开发的最佳设计模式是正确的,还是反映了较浅的学习曲线而不是其他设计模式?

我还注意到codeigniter框架使用单例模式和MVC模式.这种混合设计模式是否常见并且是有效的还是因为特定原因在codeigniter中使用?

php oop frameworks design-patterns codeigniter

6
推荐指数
1
解决办法
2805
查看次数

PHP的高级OOP功能的真实世界示例

我正在努力提高我在PHP中的OOP知识,并一直在研究抽象类和接口.

我学到

  • 它们都是无法自己实例化的类,但可以扩展(在接口的情况下实现)
  • 抽象类为扩展它们的其他类提供方法和属性.
  • 如果类使用抽象方法,那么类本身也必须是抽象的.
  • 如果在抽象类中定义抽象方法,则所有子类都必须定义该方法的详细信息.未定义为抽象的方法可以与常规方法相同的方式使用.
  • 接口定义了实现它的类必须具有的方法.接口中未定义方法的功能,接口仅提供必须包含在子类中的方法列表.
  • 接口不定义任何属性.
  • 类可以实现任意数量的接口,但是它们必须为它们实现的每个接口定义一个方法

我认为这涵盖了基础知识.如果您认为我遗漏了任何内容,请随意添加.

我想知道的是,是否有任何实际的这些类的实现示例,尤其是接口类.有没有人知道任何使用它们的开源应用程序我可以浏览以更好地理解它们并查看它们在何时何地被有效使用?我遇到过使用动物的书籍例子,但未能证明这些类别的重要性.

php oop

5
推荐指数
1
解决办法
5971
查看次数

.htaccess Rewrite - 如果文件存在且与参数同名,则失败

我在重写规则方面遇到了一些麻烦,在谷歌搜索之后,我无处可去.我有一个标准的URL设置重写,如下所示:

RewriteRule ^services/(.*)/ /services/index.php?content=$1 [L]
Run Code Online (Sandbox Code Playgroud)

该站点使用值content来从DB请求相关内容,但只是使URL看起来更漂亮; 标准的东西.这在一定程度上起作用.例如,如果我的URL我们/services/testimonials/规则正常; 内容被加载,页面正常显示.我通过某些URL看到的内容(例如/services/training/)是一个错误说明:

Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0 Fatal error: Unknown: Failed opening required 'redirect:/services/index.php' (include_path='[removed]') in Unknown on line 0
Run Code Online (Sandbox Code Playgroud)

经过大量谷歌搜索和头部敲击(两者都没有什么进展),我发现如果我将URL更改为/services/Training/(注意大写的T),它就可以了.这很快让我想到了URL中的某些冲突(事后我可能应该首先想到).检查哪些URL有效,哪些没有,我连接了点,发现被破坏的URL在子目录中具有与URL相同名称的文件.那句话令人困惑.基本上我不能使用URL,/services/training/因为有一个文件/services/training.php会导致错误的返回.

有一个明显的解决方法是重命名与URL冲突的文件,但在重写规则中是否有一种方法可以让它忽略它可能找到的同名文件?

php apache .htaccess mod-rewrite apache2

4
推荐指数
1
解决办法
1342
查看次数

MySQL用户表:查找具有相同电子邮件地址的行

我在MySQL中有一个用户表.

id | username | email
Run Code Online (Sandbox Code Playgroud)

我想根据电子邮件地址获取重复用户的ID.所以基本上找到用户的ID,其中可以在表中找到超过1次的电子邮件地址.

我写了这样的东西:

SELECT id
FROM users as users
WHERE (
  SELECT count(id)
  FROM users as users2
  WHERE users.email = users2.email
) > 1
Run Code Online (Sandbox Code Playgroud)

它工作正常,但速度很慢,因为查询似乎没有使用索引.还有其他想法吗?谢谢!

mysql indexing

3
推荐指数
1
解决办法
1494
查看次数

如何在缓存页面中使用VaryByParam的任何参数值?

<%@ OutputCache Duration="10" VaryByParam="Button1" %>
Run Code Online (Sandbox Code Playgroud)

我键入上面的代码来改变Button的文本,但它不会改变值.

asp.net

1
推荐指数
1
解决办法
777
查看次数