• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 4年前 (2022-01-25) 19次浏览 已收录 0个评论
文章目录[隐藏]

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

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

比如删除数据表的代码

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

<code>现在只会这样的方法实现C::t(数据表,键值)看上去好low...</code>

回复内容:

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

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

比如删除数据表的代码

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

<code>现在只会这样的方法实现C::t(数据表,键值)看上去好low...</code>

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

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

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

t方法返回了对象之后delete

建议先看看ORM

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

Mysql的数据库操作类

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

。本文来源gao!%daima.com搞$代*!码网1

搞代gaodaima码

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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:discuz – PHP如何这样操作MYSQL的方法?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址