PHP应用程序结构

开发技术 作者: 2024-07-03 14:35:01
我开始创建一个网站,很快我就发现我的代码很乱.我用 PHP编程已经有一段时间了,从那以后我学会了OOP.现在,从这个角度来看,在C#或java中创建应用程序非常简单,PHP给我带来了麻烦. 我曾经用一行来编写所有东西(在php中),用最少量的方法,根本没有类.那么方法应该有多少,这些类应该在哪里? 例: 我有account.php,我想更新用户信息.所以在检查有人发送了一些数据之后如果(isset
我开始创建一个网站,很快我就发现我的代码很乱.我用 PHP编程已经有一段时间了,从那以后我学会了OOP.现在,从这个角度来看,在C#或java中创建应用程序非常简单,PHP给我带来了麻烦.

我曾经用一行来编写所有东西(在PHP中),用最少量的方法,根本没有类.那么方法应该有多少,这些类应该在哪里?

例:
我有account.PHP,我想更新用户信息.所以在检查有人发送了一些数据之后如果(isset($_ POST [..接下来是什么?我曾经做过
所有的检查,如$email = CheckForRisksOrSomething($_ POST [“email]);然后只需更新MysqL.

这让我想到了这个问题,我应该创建一个类User,它应该包含哪些方法?此外,应该保存此类,假设user.PHP将显示用户的配置文件.

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

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

Someclass应该保存在哪里?

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

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

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

编辑24.2.2016

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

解决方法

这只猫有不止一种方法,但我会为你推荐一些有用的链接和书籍.

Zend’s Coding Standards: 如果您正在查看如何构建,命名等文件,那么我会看看Zend建议如何做这些事情.遵循他们的指导原则,您可以使用这些相同的方法创建与其他人的代码兼容的包.

您要做的是专门为您的类创建一个文件夹.你怎么知道你什么时候需要上新课,包括什么?好问题!

如果您发现自己遇到了相关的信息组,需要一起处理或解决特定问题,您可能应该创建一个可以处理它的新类.

例如,User类可以处理您想要对站点用户进行的任何类型的更改.另一个例子是一个Role类,它可以执行任务(或不执行任务),具体取决于他们是否是管理员.关于Objects和Classes的精彩之处在于你可以创建一个User :: $角色(在User类中名为$role的变量),它是一个Role类.因此,例如,您将在User对象中拥有一个Role对象.从这里开始,您的用户对象现在可以通过执行以下操作来调用角色对象:

class User {
    private $username;
    private $role;

    function __construct($username){
        $this->username = $username;
    }
    public function setRole($roleType){
        switch($roleType){
            case "admin":
                $this->role = new Admin(); // contained in another class file
                break;
            case "staff":
                $this->role = new Staff(); // contained in another class file
                break;
            default:
                $this->role = new Visitor(); // contained in another class file
            } // end case
        } // end setRole
} // end Class User

$loggedInUser = new User("Bubba");
$loggedInUser->setRole("admin");
$loggedInUser->role->deleteMessage();

通常,您需要保持代码的结构和分离,以便每个类只处理它应该具有的信息,而不是做任何应该做的事情.如果你发现一个类做了太多的事情,这意味着你找到了创建另一个类来处理这个新职责的好时机.如何将它们组合在一起通常是“设计模式”所回答的问题.有一本非常好的书,涵盖了使用对象和类进行编程,以及使用设计模式.

查看由Matt Zandstra撰写的“PHP 5对象,模式和实践”一书,由Apress出版.这是一本精彩的书,用PHP将你的脚趾浸入OOP!

原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_37913.html
php 应用 程序 结构