PHP应用程序结构

时间:2011-07-07 15:55:39

标签: php code-structure

我开始创建一个网站,很快我就发现我的代码很乱。我用PHP编程已经有一段时间了,从那以后我学会了OOP。现在,从这个角度来看,在C#或java中创建应用程序非常简单,但PHP给我带来了麻烦。

我曾经用一行来编写所有内容(在php中),只需要少量的方法,根本没有类。 那么方法应该有多少,这些类应该在哪里?

示例: 我有account.php,我想更新用户信息。那么在检查有人发送了一些数据后if(isset($_POST[..下一步是什么?我曾经只是做 所有检查如$email=CheckForRisksOrSomething($_POST["email]);然后只更新mysql。

这让我想到了一个问题,我应该创建一个类用户 以及它应该包含哪些方法?此 也应该保存此类,假设user.php会显示用户的个人资料。

回到课程应该有多少,我应该在像以下文件中使用:

$smth = new Someclass();
if($smth->checkIfSaved()){
    $user = new User();
    $user->updateUser(/* all the $_POST stuff here? */); 
} else {
    $smth->showUserDetailsForm();
}

Someclass应该保存在哪里?

所以如果有人给我一个如何构建以下功能的例子(在文件,类和可能的方法中)。

  • 用户(注册,登录,编辑帐户......)
  • 带有评论的图片
  • 新闻(也有评论)
  • 施用

这只是一个例子当然,但我不想继续我的烂摊子,然后三天后再看看它,只是看着脸,并想知道我在那里写了什么。好吧,我今天已经这样做了,这就是我要问的原因。


编辑 24.2.2016

虽然这是一个老问题,但正如建议调查一个框架。虽然设置它可能需要一些时间,但它可以提高开发速度,代码很好,干净且更安全。我个人使用Laravel。

4 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

很难告诉你应该怎么做。那里有许多不同的偏好。查看ZendKohanaCodeIgniter等框架。

当我使用OOP设计创建较小的应用程序时,我通常会尝试遵循以下层次结构:

  • index.php中加入bootstrap.php
  • bootstrap.php包含所有类和配置。
  • 创建一个classes目录,您可以在其中将核心功能保存在core文件夹中。
  • 此外,在您的classes目录中创建两个文件夹controllersmodels
  • 在我的项目中,我通常有另一个文件夹templates,其中所有的html文件都进入(然后使用Smarty模板引擎进行渲染)。

这是一种非常简化的方法,但可以引导您朝着正确的方向前进。对于用户,图片等的要求,创建一个包含单个用户的所有数据的模型。

class UserModel() {
    public $name;
    public $email;
}

然后是一个可以修改此模型的控制器:

class UserController() {
    public function update($user) {
        ...
    }
}

答案 2 :(得分:0)

我的回答可能不会直接回答你的问题,但可能会给你带来很多好处。

使用真正的框架。不要从头开始构建带代码的网站。它将为您节省大量时间,并将迫使您使用良好的代码分离实践,真正优秀和干净的项目结构,但同样,它将节省您的时间!对于你决定在那里实施的许多事情,将有一个现成的解决方案,你做的常见事情(作为验证电子邮件地址)将以正确的方式完成。

我会选择一个MVC PHP框架,在过去使用了很多CakePHP,Zend,Kohana和其他很少的人之后,我建议你和Yii一起去。非常小的学习曲线,漂亮的文档,漂亮的大型活跃社区,您将能够在非常短的时间内移植任何已有的东西。

我非常肯定你所描述的项目框架会减少你的时间至少2次,同时你将解决上面提到的所有问题。我从经验中知道这一点,很久以前从头开始开发项目。

答案 3 :(得分:0)