在 PHP 中更有效地使用类


Using classes much more effectively in PHP?

好吧,假设我有两个文件和一个名为 Users 的 MySQL 表和一个名为 Select 的表。

  • 索引.php
  • 功能.php

用户

ID    NAME    L_NAME     POINTS
0     Jill    Jackson     10
1     Jack    Wills       90
2     John    Doe         30

选择

ID    OPTION
0     Points
1     Name
2     LastName   

索引.php包含一个简单的表,并像这样选择。

<?php include 'output.php'; ?>
<h3>Sort by: </h3>
<select>
  <?php getSelect(); ?>
</select>
<table>
  <tr>
    <th>Firstname</th>
    <th>Lastname</th> 
    <th>Points</th>
  </tr>
  <tr>
  <?php outputData(); ?>
  </tr>
</table>

我的功能.php文件具有以下代码:

function outputData() {
    try {
        $handler = new PDO("mysql:host=$host;dbname=$db", "$user", "$pass");
        $handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (PDOException $e)
     {
        echo $e->getMessage();
        echo 'Sorry, an error has occurred.';
        die();
     }
    $query = $handler->query('SELECT * FROM `Users`');
    while($r = $query->fetch(PDO::FETCH_OBJ)) {
    echo
        '
            <td>
                <input type="text" value="'.$r->Name.'" >
            </td>
            <td>
                <input type="text" value="'.$r->l_name.'">
            </td>
            <td>
                <input type="text" value="'.$r->points.'">
            </td>
        ';
    }
}
function getSelect() {
    try {
        $handler = new PDO("mysql:host=$host;dbname=$db", "$user", "$pass");
        $handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (PDOException $e)
     {
        echo $e->getMessage();
        echo 'Sorry, an error has occurred.';
        die();
     }
    $query = $handler->query('SELECT * FROM `Select`');
    while($r = $query->fetch(PDO::FETCH_OBJ)) {
    echo
        '
            <li>'.$r->option.'</li>
        ';
    }
}

我将使用此代码将数据输出到多个不同的页面上。这只是一个非常基本的例子...我有多个不同的函数用于从表中输出和插入数据。我的问题是,使用类是否比像我这里那样编写裸函数并将其包含在我需要的每个页面上更好?

使用类与我当前正在做的事情有什么好处?

我已经查看了有关如何构建类的各种教程,但是与我目前所做的相比,我从未真正发现其好处的真正需求......

有人可以详细说明吗?

对我来说

,使用类的主要需求,至少在您给出的场景中,是帮助

  • 代码的可读性。使用表示现实生活中某些内容的对象,代码更具可读性,而且,您不会将所有函数弄乱到一个或多个文件中。如果一个函数影响一个类(f.i. 使用它的类成员,尽管这是非常相对的),你知道该类.php是你应该创建该函数的地方,也是你应该找到它的地方。

  • 代码的可维护性。出于同样的原因,代码更易于维护。你知道一个对象应该做什么,你很容易阅读你的代码应该做什么以及在哪里做。这有助于,恕我直言调试。此外,当您编程时,您可以更直观地知道哪些数据进入类以及可以使用包含该数据的对象的哪个方法。

  • 封装。这个概念在编程时需要更多的努力,因为你必须注意哪些成员应该被其他类或主代码的其他实例访问,但可以防止很多错误。例如,可以防止您正在调试并且您期望变量的值与实际发生的情况不符的情况......而这一切都是因为某处有一段代码改变了该值,而您甚至没有意识到。

  • 可 重用。您的类在其他项目中可能很有用,只需进行一些更改(并且易于找到您需要更改的位置和内容)

当然,应该还有更多的原因,但这些是我脑海中的主要原因。顺便说一句,在小型项目或项目的某些部分中,使用程序编程可以更容易,更快,甚至更干净。