繁体   English   中英

在PHP中更有效地使用类?

Using classes much more effectively in PHP?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

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

  • 的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 个回复

对我来说,至少在您给出的情况下,使用类的主要需求是帮助

  • 代码的可读性。 使用代表现实生活中某些事物的对象,代码更具可读性,而且,您也不会将所有功能弄乱到一个或几个文件中。 如果一个函数影响一个类(尽管它是非常相关的,fi会使用其类成员),则您知道class.php是您应该在其中创建该函数以及在其中找到它的地方。

  • 代码的可维护性。 出于同样的原因,代码更具可维护性。 您知道对象应该执行的操作,可以轻松阅读代码应执行的操作以及在何处执行。 这有助于进行恕我直言的调试。 同样,当您以更直观的方式进行编程时,可以知道哪些数据进入了类,以及可以使用包含该数据的对象的哪种方法。

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

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

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

1 如何更有效地使用 PHP 中的 JS 对象?

我有一个 onclick 按钮,它通过以下 AJAX 向我的 PHP 发送一个 JS 对象(数据是我的对象的名称): 问题是当我尝试清理数据时,我得到的 var_dump 只是第一个数组,其余信息都消失了: 然而,这是我发送的信息: 我已经放弃了清理数据的尝试,但现在看来我必须对每个数组 ...

2 更有效地调用类的方法

我的代码没有任何问题,我只是想看看是否有更短的方法 就像我可以做类似的事情 因为我将创建更多的对象,并且我喜欢尽量减少我的代码数量并使我的代码更有效率。 提前感谢您的帮助。 这是整个代码 ...

3 如何从php更有效地执行python?

好的,我必须问这个。 当我使用shell_exec , exec或其他命令从php执行python代码时,我的页面加载速度降低了10倍。 因此,即使在我的本地主机中,具有exec或system功能的空页面也会在0.01秒内加载,而在正常情况下,此时间约为0.001秒。 在尝试完成我的任 ...

4 如何使用php更有效地在mysql中执行大量查询?

我有一个csv文件。 在我的PHP脚本中,我正在逐行读取此csv文件(将每个列保存在数组中),然后对任何特定的列值执行一些操作(例如查找日期和时间列的时间戳)。 经过此处理后,我将这些值和从csv文件读取的某些值插入到mysql表中。 我必须在其中插入4个表,并且某些表需要为单行多次插 ...

6 使用attoparsec更有效地解析Haskell中的句子

我正在尝试解析.txt格式的电子书,以了解有关attoparsec和Haskell(我是新手)的更多信息。 在这种情况下,我试图计算给定文本文件中的句子数。 这是我的代码: 如果您想全面了解我在做什么,请单击此链接到github存储库。 我的问题是,当我尝试使用输入来解析文本文件时 ...

9 如何在C ++中更有效地使用?

我试图用C ++编写2048游戏,我创建了一些函数来检测用户按下箭头后在随机位置添加新的随机数。 这些功能将查找没有数字的位置,然后放置新数字。 我试图做到这一点。 一种是在很多情况下都使用的愚蠢方式,另一种只是在我运行此游戏时工作缓慢时使用。 我是C ++的新手。 我希望有人可以帮助 ...

2017-09-04 15:24:24 1 95   c++
10 在MySQL中更有效地使用MAX()

我正在尝试获取所有订购了categoryID为10但本月未订购任何产品的客户的所有电子邮件地址。 如果他们在本月订购了任何类型的categoryID,那么我不想包括它们。 我正在使用此查询,但我认为它效率不高,已经运行了很长时间。 有没有更好的办法? ...

2014-04-23 22:47:05 2 33   mysql
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM