Home > Backend Development > PHP Tutorial > discuz - PHP如何这样操作MYSQL的方法?

discuz - PHP如何这样操作MYSQL的方法?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-06-06 20:29:38
Original
1208 people have browsed it

最近看DISCUZ的代码,由于是自学PHP,DISCUZ这样操作数据库的方法看不明白求解答。

<code>C::t(数据表)->delete(键值)</code>
Copy after login
Copy after login

比如删除数据表的代码

能实现这样方法的关键代码是什么?

<code>现在只会这样的方法实现


C::t(数据表,键值)


看上去好low...</code>
Copy after login
Copy after login

回复内容:

最近看DISCUZ的代码,由于是自学PHP,DISCUZ这样操作数据库的方法看不明白求解答。

<code>C::t(数据表)->delete(键值)</code>
Copy after login
Copy after login

比如删除数据表的代码

能实现这样方法的关键代码是什么?

<code>现在只会这样的方法实现


C::t(数据表,键值)


看上去好low...</code>
Copy after login
Copy after login

<code>class C {
    private $_table;

    public static function t($table)
    {
        $c = new C();
        $c->_table = $table;

        return $c;
    }

    public function delete($id)
    {
        $sql = "delete from `" . $this->_table ."` where `id`='" . $id . "'";
        //执行sql语句
    }
}

C::t('table')->delete($id);</code>
Copy after login

其他朋友说了很多,我就闲得蛋疼给你贴一段代码吧,没有测试,大概是这个意思。

这个就是链式写法了,执行完方法可以返回自身对象,具体请看文章
SQL链式写法传送门

t方法返回了对象之后delete

建议先看看ORM

抓一个orm框架看看就行了,无非都是一些封装罢了。看懂原理自己也可以写出来,楼主这个思想比较赞,这种top down design 的编码方式会使得代码逻辑更加清晰。

Mysql的数据库操作类

当年我觉得jQuery的链式调用好厉害,后来点开源码看到一堆return this

在此我不贴代码,我也不知道dz是怎样的机制,首先你需要知道正常情况下删除的sql语句是什么,基本上所有的删除语句无非是表和条件不同罢了,上面你所写前面有表后面有键值两者都已经传递过去了,它怎么写的就随意了 (pdo mysqli )数据库的操作写在对应的方法里面就行了。还有你得简单的了解面向对象,然后你找到dz中相关类,就可以看到具体实现了。

Related labels:
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Issues
php data acquisition?
From 1970-01-01 08:00:00
0
0
0
PHP extension intl
From 1970-01-01 08:00:00
0
0
0
How to learn php well
From 1970-01-01 08:00:00
0
0
0
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template