相关疑难解决方法(0)

202
推荐指数
10
解决办法
19万
查看次数

在PHP中是否有用于数据库访问的单例的用例?

我通过PDO访问我的MySQL数据库.我正在设置对数据库的访问权限,我的第一次尝试是使用以下内容:

我想到的第一件事是global:

$db = new PDO('mysql:host=127.0.0.1;dbname=toto', 'root', 'pwd');

function some_function() {
    global $db;
    $db->query('...');
}
Run Code Online (Sandbox Code Playgroud)

这被认为是一种不好的做法.一点点搜索后,我结束了与Singleton模式,其

"适用于需要单个类实例的情况."

根据手册中的示例,我们应该这样做:

class Database {
    private static $instance, $db;

    private function __construct(){}

    static function singleton() {
        if(!isset(self::$instance))
            self::$instance = new __CLASS__;

        return self:$instance;
    }

    function get() {
        if(!isset(self::$db))
            self::$db = new PDO('mysql:host=127.0.0.1;dbname=toto', 'user', 'pwd')

        return self::$db;
    }
}

function some_function() {
    $db = Database::singleton();
    $db->get()->query('...');
}

some_function();
Run Code Online (Sandbox Code Playgroud)

当我能做到这一点时,为什么我需要相对较大的课程呢?

class Database {
    private static $db;

    private function __construct(){}

    static function get() …
Run Code Online (Sandbox Code Playgroud)

php oop singleton design-patterns

136
推荐指数
7
解决办法
4万
查看次数

如何在PHP中测试注册表模式或单例?

为什么在像请求驱动的PHP这样的语言中难以测试单例或注册表模式?

除了实际的程序执行之外,您可以编写和运行测试,这样您就可以自由地影响程序的全局状态,并为每个测试函数运行一些拆卸和初始化,以使每个测试的状态达到相同状态.

我错过了什么吗?

php testing singleton static

14
推荐指数
2
解决办法
7315
查看次数

12
推荐指数
2
解决办法
4340
查看次数

PHP如何使用静态类的魔术方法?

我正在尝试将数组转换为对象.我想使用魔术方法 - 带有静态属性的__get和__set.

我的代码:

class UserData {
    private static  $id, $name, $login;

    public function __get($var)
    {
        return self::$var;
    }
    public function __set($var, $val)
    {
        self::{$var} = $val;
    }
}
Run Code Online (Sandbox Code Playgroud)

并设置:

foreach($userArray as $key => $val) 
    {
        DaneBilingowe::${$key} = $val;
    }
Run Code Online (Sandbox Code Playgroud)

错误:致命错误:无法访问私有属性UserData :: $ id

是否可以使用具有静态属性的魔术方法?

php static class

6
推荐指数
1
解决办法
6048
查看次数

如何从另一个类访问对象?

我有一个数据库类,用于进行选择,更新,删除MySQL查询.

现在,我想创建另一个类中的MySQL查询,但如果我定义$db = new DB();index.php,我不能使用$db另一个类变种.$db如果我想进行查询,是否必须一遍又一遍地定义变量?或者有没有办法$db使用对象全局var 来创建var?

php class

5
推荐指数
3
解决办法
7464
查看次数

使用PHP PDO的数据库抽象类设计

我正在设计一个Web应用程序(实际上,这是一个爱好,我正在尝试自学设计,还有什么比做它更好的方法:).无论如何,我在考虑如何处理我的数据库.我对PDO很满意,我想在我的抽象类中利用PDO.我正在考虑制作单例,因此只有一个数据库连接.这个单例将创建一个PDO连接.

在那之后,我不明白为什么我需要做太多其他事情.然后我可以使用数据库处理程序来调用PDO函数.我可能想要一些辅助函数,但是当它归结为它时,我只会将PDO用于实际的SQL查询.

这种方法有问题吗?与我使用的抽象类相比,它看起来过于简单.

php oop pdo database-abstraction

4
推荐指数
1
解决办法
4168
查看次数