【发布时间】:2010-04-10 08:20:45
【问题描述】:
我有 php 脚本,可以执行注册、登录、上传等操作。 我想将 HTML 保存在一个单独的文件中,这样说我制作了一个桌面客户端,我可以使用 php 文件进行登录注册等。
基本上有一个前端,HTML 或桌面客户端,然后只有一个后端,php。
这可能吗?
编辑:像 ASP.net 这样的东西会更适合这个吗?
【问题讨论】:
我有 php 脚本,可以执行注册、登录、上传等操作。 我想将 HTML 保存在一个单独的文件中,这样说我制作了一个桌面客户端,我可以使用 php 文件进行登录注册等。
基本上有一个前端,HTML 或桌面客户端,然后只有一个后端,php。
这可能吗?
编辑:像 ASP.net 这样的东西会更适合这个吗?
【问题讨论】:
不要只是跳上框架的潮流。 PHP 的创建者本人主张采用无框架的方法来处理这种分离问题。见:http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html
通用框架的问题在于它们是不必要且缓慢的。如果您专注于单个领域(例如 CMS)并使用 drupal 或其他东西,那很好,但要警惕通用框架。特别担心Smarty没用(见:http://codeangel.org/articles/simple-php-template-engine.html)
在你对我发火之前,请记住,我不是反 Kohana、ZF 等。它们仍然有它们的用途。但由于人们倾向于直接告诉人们直接使用框架,我想我会提供不同的视角。
【讨论】:
PHP 本身就是一个模板,长期以来一直在讨论 Smarty 之类的无用之处https://stackoverflow.com/questions/630714/smarty-the-best-choice 这纯粹是代码组织问题,而不是“模板引擎” MVC 是一个很好的方向。
如果你打算做一个桌面客户端或类似的东西,我认为你的方向也是创建一个 API - http://www.gen-x-design.com/archives/create-a-rest-api-with-php/
【讨论】:
为什么不呢? 只需将您的每个应用程序分为两部分 - 数据准备和数据显示。
比如说,您的数据准备部分(也称为“业务逻辑”)可能看起来像
<?
include 'config.php';
$data=db_query("SELECT * FROM data",3);
display($data,"users_list.tpl");
?>
注意display() 函数。它是负责数据输出的函数。它可以呈现 HTML 和 JSON,具体取决于目的地。
它的代码可能看起来像
<?
if ($destination == 'desktop') echo json_encode($data);
else include $template;
?>
users_list.tpl 可能看起来像
<a href="?id=0">Add item</a>
<? foreach ($data as $row): ?>
<li><a href="?id=<?=$row['id']?>"><?=$row['name']?></a>
<? endforeach ?>
非常简单。只需避免在业务逻辑代码中使用 echo $row['name']; 即可。
【讨论】:
是的,这可以通过 MVC(模型-视图-控制器)等设计范例实现。我建议研究一个框架,例如 CodeIgniter、Kohana、CakePHP 或 Symfony。我听说 CodeIgniter 对初学者来说是最容易学习的。
【讨论】:
您可以选择 Model-View-Controller 设计模式。在此处查看有关它的更多信息:
http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
在 phpro.org 上有一个很好的教程:
http://www.phpro.org/tutorials/Model-View-Controller-MVC.html
话虽如此,MVC是相当高级的话题,你必须擅长OOP。另一件事可能是使用 Smarty template engine,但您必须学习如何使用它。
Also, not to forget about top 10 MVC PHP frameworks you can use.
我个人建议你使用CodeIgniter,它比其他同行更容易和更快。或者你可能想去 Kohana,据说是 CodeIgniter 的扩展版本。
【讨论】:
agiletoolkit 是一个轻量级框架,它在实现 MVC 方面做得很好,并且作为奖励,它还提供了与前端 Jquery UI 的轻松集成,因此您可以非常轻松地创建漂亮的网站,并完成对数据库的 CRUD 访问。
正如其他人所提到的,如果您在方法上自律,您可以用普通的 php 自己执行此操作,但是 - 遵守自律并不总是那么容易,尤其是在有截止日期的情况下。
我无法评论其他框架,因为我没有使用过它们,但作为非 Web 开发领域的经验丰富的程序员,我更喜欢敏捷工具包的方法而不是编码原始 php。我不想重新发明很多东西,比如安全、ajax 等。我只想继续开发我的应用程序,并在开发结束时轻松维护代码。
如果这也是您要查找的内容,请查看此php framework with jquery integration
【讨论】: