我正在开发我对OOP设计模式的知识,并且我的主要关注点是网站开发和Web应用程序开发,我试图在这些领域中找到设计模式的示例,但似乎主要遇到Web框架(任何其他示例将不胜感激) .在我看来,大多数(所有?)基于PHP的框架似乎都使用MVC设计模式.由于这是最广泛使用的,因此认为它是这种类型开发的最佳设计模式是正确的,还是反映了较浅的学习曲线而不是其他设计模式?
我还注意到codeigniter框架使用单例模式和MVC模式.这种混合设计模式是否常见并且是有效的还是因为特定原因在codeigniter中使用?
我正在努力提高我在PHP中的OOP知识,并一直在研究抽象类和接口.
我学到
我认为这涵盖了基础知识.如果您认为我遗漏了任何内容,请随意添加.
我想知道的是,是否有任何实际的这些类的实现示例,尤其是接口类.有没有人知道任何使用它们的开源应用程序我可以浏览以更好地理解它们并查看它们在何时何地被有效使用?我遇到过使用动物的书籍例子,但未能证明这些类别的重要性.
我在重写规则方面遇到了一些麻烦,在谷歌搜索之后,我无处可去.我有一个标准的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冲突的文件,但在重写规则中是否有一种方法可以让它忽略它可能找到的同名文件?
我在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)
它工作正常,但速度很慢,因为查询似乎没有使用索引.还有其他想法吗?谢谢!
<%@ OutputCache Duration="10" VaryByParam="Button1" %>
Run Code Online (Sandbox Code Playgroud)
我键入上面的代码来改变Button的文本,但它不会改变值.
php ×3
oop ×2
.htaccess ×1
apache ×1
apache2 ×1
asp.net ×1
codeigniter ×1
frameworks ×1
indexing ×1
mod-rewrite ×1
mysql ×1