这有点难以解释。
假设您正在创建CMS。在该CMS中,您希望用户能够添加页面,编辑它们并删除它们。您还希望用户能够添加帖子,编辑它们并删除它们。您还希望用户能够添加,编辑,删除产品以及添加,编辑和删除类别......(您明白了。)
现在我处理这个问题的方法是我会创建单独的表单并将它们提交到同一个文件中,该文件将处理添加,编辑,删除的所有过程......
例如:我会创建一个addpage.php。它将有一个表单,它将提交到process.php文件。与帖子相同。 addpost.php文件并提交到process.php。在这些表单中,我还将发送一个名为“p”的隐藏输入来标识进程。
例如:在addpage.php上,隐藏输入将在addpost.php上为<input type="hidden" name="p" value="addpage">
,隐藏输入将为<input type="hidden" name="p" value="addpost">
。所以在process.php中,我将使用ifelse语句检查$ _POST ['p']并执行任务。有点像:
if( $_POST['p'] == "addpage" ){
// the process for adding page
}elseif( $_POST['p'] == "editpage" ){
// the process for editing a page
}elseif( $_POST['p'] == "addpost" ){
// the process for adding a post
}
现在这种方法显然工作正常,但这并不是一种好的编程技术。
我怎样才能更好地处理这个问题?我怎么能这样呢。
我是OOP的新手,我知道大多数人会告诉我使用框架。但这主要是为了学习。没有MVC,最好的处理方法是什么?
答案 0 :(得分:1)
根据您的$_POST['p']
// my_request_handler.php
class Handle_Page{
public $Requested_Page;
function __construct($request_for) {
// Holds $_POST['p']
$this->Requested_Page = $request_for;
}
function handle_request() {
switch( $this->Requested_Page ) {
case "addpage":
// call add_page method
$this->add_page();
break;
case "editpage":
..............
..............
break;
case "deletepage":
..............
break;
}
function add_page() {
/// Define functionality here
}
}
}
现在来看你的代码:
if( $_POST['p'] == "addpage" ) {
// the process for adding page
}
elseif( $_POST['p'] == "editpage" ) {
// the process for editing a page
}
elseif( $_POST['p'] == "addpost" ) {
// the process for adding a post
}
这部分是这样的:
include 'my_request_handler.php';
$Request_Handler = new Handle_Page($_POST['p']);
$Request_Handler->handle_request();
现在它的工作与你没有oops的工作相同。根据这个例子,我分离了Handle_Page
类中页面的请求处理,并在任何地方返回响应。你只需要包括这个类。
答案 1 :(得分:0)
我会建议你 1.首先查看如何在PHP中编写类和方法。 2.您应该首先考虑的是数据库处理,它应该执行诸如连接到db,执行SQL等任务。 3.然后编写一个单独的类,它将使用此db类添加,编辑,更新或删除每个实体的数据,如页面,帖子,类别等。 BTW首先继续尝试创建一些课程。 php.net或Google也会提供很多帮助。