OOP - 总是使用类方法而不是函数是一种好习惯吗?

时间:2016-05-23 16:54:20

标签: php oop pdo

为长期问题道歉。我知道如何使用类,但有时我会在 时使用它们。 我的问题确实是三倍..

1)总是使用类方法是不错的做法,即使该类不一定获取/设置任何属性?

例如,如果我想要一个函数只是吐出一个HTML标题,我应该这样做......

namespace Project1\UI;

class HTML
{
    public function makeHeader()
    {
        echo "<html><head><title>Title</title></head><body>";
    }
}

2)您是否为数据库访问等内容构建自己的类,而不是直接调用PDO扩展? 下面的代码增加了复杂性,实际上只是将值传递给PDO:

namespace Project1\DB;
use \PDO;

class Database {

    private $pdo;
    private $statement;

    public function __construct() {

        require $_SERVER['DOCUMENT_ROOT'] . 'Project1/Config/Login.php';

        $pdo = new PDO(
            sprintf (
                'mysql:host=%s;dbname=%s;port=%s;charset=%s',
                $settings['host'],
                $settings['name'],
                $settings['port'],
                $settings['charset']
            ),
            $settings['username'],
            $settings['password']
        );   

        $this->pdo = $pdo;
        return $pdo;
    }

    public function prepare($statement) {    
        $this->statement = $this->pdo->prepare($statement);  
    }

    public function bind($placeholder,$value) {
        $this->statement->bindValue($placeholder,$value);
    }

    public function execute() {
        $this->statement->execute();      
        return $this->statement->fetchAll(PDO::FETCH_ASSOC);

    }
}

3)如果我想使用全局函数,是否有将这些存储在磁盘上的好习惯?大概我应该把它们放在一个单独的文件/命名空间中?

/Project1/Logic/Validation.php << Contains a class
/Project1/Logic/Search.php     << Contains a class
/Project1/Logic/Compare.php    << OK to just contain a function?

谢谢:)

1 个答案:

答案 0 :(得分:0)

回答第1和第3个问题

是的,您可能只有实现函数的类而不在属性中存储值。我们称之为助手 ......

不,不是为项目中的每个函数创建一个类都不是一个好主意。请记住,您需要包含的文件越多,服务器将花费的阅读/解释时间就越多,这意味着执行脚本的时间会更长。

回答第二个问题

这是你的电话。我建议扩展原生PDO课程,而不是使用Proxy Class

PDO是一个很好的课程,你不想限制自己或重新发明轮子