php __callメソッドの使用手順_PHPチュートリアル
この記事では、php __call メソッドの使用手順を紹介します。php __call メソッドを学習する必要がある人は、参考にしてください。 PHP に触れ始めたばかりの子どもたちは、魔法のメソッド __call を参考書で目にしたり、その応用例を見たことがあると思います。しかし、実際にコードを書き始めるとき、それを使ったことがありますか? ?正直に言うと、私は PHP をしばらく使ってきましたが、実際の開発に適用したことはありませんでした。
最初に __call の機能について話しましょう: 「PHP5 オブジェクトには新しい特別なメソッドがあります。このメソッドは、オブジェクト内の他のメソッドを監視するために使用されます。オブジェクトに存在しないメソッドを呼び出そうとすると、__call メソッドが呼び出されます。自動的に「
」と呼ばれます。典型的な使用例:
コードは次のとおりです | コードをコピー |
runTest('オブジェクト コンテキスト内'); |
代码如下 | 复制代码 |
/** +---------------------------------------------------------- * 利用__call方法实现一些特殊的Model方法 +---------------------------------------------------------- * @access public +---------------------------------------------------------- * @param string $method 方法名称 * @param array $args 调用参数 +---------------------------------------------------------- * @return mixed +---------------------------------------------------------- */ public function __call($method,$args) { if(in_array(strtolower($method),array('field','table','where','order','limit','page','alias','having','group','lock','distinct'),true)) { // 连贯操作的实现 $this->options[strtolower($method)] = $args[0]; return $this; }elseif(in_array(strtolower($method),array('count','sum','min','max','avg'),true)){ // 统计查询的实现 $field = isset($args[0])?$args[0]:'*'; return $this->getField(strtoupper($method).'('.$field.') AS tp_'.$method); }elseif(strtolower(substr($method,0,5))=='getby') { // 根据某个字段获取记录 $field = parse_name(substr($method,5)); $where[$field] = $args[0]; return $this->where($where)->find(); }else{ throw_exception(__CLASS__.':'.$method.L('_METHOD_NOT_EXIST_')); return; } } |
まず、コードの具体的な機能については説明しません。第 2 に、コード内のプログラミングのアイデアを調べることで学ぶべき価値がまだたくさんあります。
彼の呼び出し方について話せば、彼がいかに「強力」であるかがわかります。
電話:
$this->dao= M('table'); // テーブル モデルの高速かつ高パフォーマンスなインスタンス化
$this->dao->field($field)->where($where)->limit($offset . ',' . $limit)->select(); // クエリフィールドを設定します。 , クエリ条件、クエリ数量を設定し、最後にクエリ操作を実行します。もちろん、返されるのはデータベースのレコードです
「何かが間違っている」を参照してください。field メソッドがオブジェクトになり、where、limit、select メソッドもオブジェクトになりました。実際、field メソッドと where メソッドは Model クラスに存在しません。これらのメソッドが存在しないため、この時点で __call メソッドが実行され、$this オブジェクトが返されます。したがって、この「接続」の記述方法が実現でき、1行のコードですべてのSQL文を扱うことができます。
これ以上は説明しません。__call メソッドの実際の応用例を紹介するだけです。完全に理解したい場合は、thinkphp のソースコードを自分で見ることをお勧めします。 (免責事項: 私は thinkphp とは何の関係もありません。また、その良さを主張しているわけでもありません)

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、
