如何正确使用PHP中的__call()魔术方法?

更新于
2026-09-26 02:02:34
1阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计219个文字,预计阅读时间需要1分钟。

如何正确使用PHP中的__call()魔术方法?

phpclass DB { private $sql=array( field=> , where=> , order=> , limit=> , group=> , having=> );

如何正确使用PHP中的__call()魔术方法?

public function __call($functionName, $arr) { // 只处理在私有成員中定義的 }}

<无详细内容>

<?php /* 作者:shyhero 邮箱:[emailprotected] Q Q:1757424878 */ class DB{ private $sql = array( "field"=>"", "where"=>"", "order"=>"", "limit"=>"", "group"=>"", "having"=>"" ); public function __call($functionName,$arr){ //只有在私有成员数组中存在的键才能被调用 $functionName = strtolower($functionName); if(array_key_exists($functionName,$this -> sql)){ $this -> sql[$functionName] = $arr[0]; }else{ echo "调用的方法不存在"; } return $this; } public function select(){ echo "select from {$this -> sql['field']} user {$this -> sql['where']} {$this -> sql['order']} {$this -> sql['limit']} {$this -> sql['group']} {$this -> sql['having']}"; } } $db = new DB(); $db -> field('sex count(sex)') //只有在私有成员数组中存在的键才能被调用 -> where('where sex in("m","w")') -> group('group by sex') -> having('having avg(age) > 25') -> select(); $db -> query('d'); //这个方法不存在就不能调用

本文共计219个文字,预计阅读时间需要1分钟。

如何正确使用PHP中的__call()魔术方法?

phpclass DB { private $sql=array( field=> , where=> , order=> , limit=> , group=> , having=> );

如何正确使用PHP中的__call()魔术方法?

public function __call($functionName, $arr) { // 只处理在私有成員中定義的 }}

<无详细内容>

<?php /* 作者:shyhero 邮箱:[emailprotected] Q Q:1757424878 */ class DB{ private $sql = array( "field"=>"", "where"=>"", "order"=>"", "limit"=>"", "group"=>"", "having"=>"" ); public function __call($functionName,$arr){ //只有在私有成员数组中存在的键才能被调用 $functionName = strtolower($functionName); if(array_key_exists($functionName,$this -> sql)){ $this -> sql[$functionName] = $arr[0]; }else{ echo "调用的方法不存在"; } return $this; } public function select(){ echo "select from {$this -> sql['field']} user {$this -> sql['where']} {$this -> sql['order']} {$this -> sql['limit']} {$this -> sql['group']} {$this -> sql['having']}"; } } $db = new DB(); $db -> field('sex count(sex)') //只有在私有成员数组中存在的键才能被调用 -> where('where sex in("m","w")') -> group('group by sex') -> having('having avg(age) > 25') -> select(); $db -> query('d'); //这个方法不存在就不能调用