在PHP中更有效地使用类?

时间:2015-01-14 20:01:52

标签: php mysql class pdo

好的,我要说两个文件和一个名为用户的MySQL表和一个名为选择的表。

  • 的index.php
  • fucntions.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   

index.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>

我的fucntions.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>
        ';
    }
}

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

使用课程与我目前正在做的事情有什么好处?

我已经看过各种关于如何构建课程的教程,但是与我目前正在做的事情相比,我从未真正发现真正的需求是什么......

有人可以详细说明吗?

1 个答案:

答案 0 :(得分:1)

对我而言,至少在你提供的场景中,使用类的主要需求是帮助

  • 代码的可读性。使用代表现实生活中某些东西的对象,代码更具可读性,同时,您不会将所有函数混淆为一个或多个文件。如果一个函数影响一个类(f.i.使用它的类成员,尽管这是非常相对的),你知道class.php是你应该创建该函数的地方以及你应该在哪里找到它。

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

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

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

当然,应该有更多的理由,但这些是我的主要原因。顺便说一句,在小型项目或项目的某些部分中使用过程式编程可以更容易,更快速,更简洁。