よく理解できないコードが数行あります。分析と対処方法については専門家に相談してください。
よく理解していないコードが数行あります。解析するのを手伝ってください。
このコードは ThinkPHP フレームワークの小さな断片から抜粋したものです
- PHP コード
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> /** +---------------------- * 取得对象实例 支持调用类的静态方法 +---------------------- * @param string $class 对象类名 * @param string $method 类的静态方法名 +---------------------- * @return object +---------------------- */ static public function instance($class,$method='') { $identify = $class.$method; if(!isset(self::$_instance[$identify])) { //这一行的self::不是太明白怎么回事 if(class_exists($class)){ //这个是判断如果类存在? $o = new $class(); if(!empty($method) && method_exists($o,$method)) self::$_instance[$identify] = call_user_func_array(array(&$o, $method)); //这一行怎么解释? else self::$_instance[$identify] = $o; //这一行怎么解释? } else halt(L('_CLASS_NOT_EXIST_').':'.$class); //halt从来没见过这东西…… } return self::$_instance[$identify]; }
-----解決策---------
このクラスの名前を次のように仮定します。 Core.php
Core.php には静的プロパティがあります
public static $_instance //このプロパティは配列であることに注意してください。
この関数は 2 つの関数を実装します:
1. ファクトリ クラス: オブジェクトの作成に使用されます。 メソッドが空の場合は、クラスが返されます。
2. 特定のクラスのメソッドを実行します。 メソッドが空でない場合は、メソッドの実行結果が返されます。
if(!isset(self::$_instance[$identify])) { // 静的メソッドへの参照には Self を使用します。 Self: 現在のオブジェクトではなく、現在のクラス自体を表します。
if(class_exists($class)){ //これは、このクラス ファイルが存在するかどうかを判断するためのものです。もちろん、これはカプセル化されたメソッドです。これは File_exist(filename) として理解できます。
self::$_instance[$identify] = call_user_func_array(array(&$o, $method)); // これは実際には何かのメソッドへのリフレクション呼び出しです。クラスの。
self::$_instance[$identify] = $o; // メソッド名が空の場合は、オブジェクトを配列に入れます。
halt(L('_CLASS_NOT_EXIST_').':'.$class); //halt という単語は停止を意味します。 コンパイルが停止するようです。
------解決策----------------------
okayu がとてもわかりやすく説明してくれました
------解決策---------
この関数は 2 つの関数を実装します:
1。ファクトリ クラス: オブジェクトの作成に使用されます。 メソッドが空の場合は、クラスが返されます。
2. 特定のクラスのメソッドを実行します。 メソッドが空でない場合は、メソッドの実行結果が返されます。
------------------------
コードを読むときは、全体的な状況を見る必要があります。
とても分かりやすく説明していただきました。私もそこから学びました。
大きいものから小さいものまで。
------解決策------------------
このクラスは登録クラスです! ファクトリータイプとは言えません!制限があります
1) クラスが初期化されていない場合は、初期化されてクラス属性配列に格納されます。クラスが初期化されている場合は、初期化されたクラスが返されます。 (ファクトリ クラスは毎回新しいインスタンスを返す必要があります。
2) メソッドがある場合は、メソッドの呼び出し結果を返します。 (パラメータは渡せません、いわゆる静的メソッドではなく、任意のメソッドが呼び出されます)
call_user_func_array(array(&$o, $method)) ここの&が必要なのか分かりません。
------解決策---------
&$o は php では $o のようです
C ポインタに似ていますが、異なります。
------解決策---------

ホット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)

ホットトピック









クラスとメソッドの概念とインスタンス クラス (Class): 同じプロパティとメソッドを持つオブジェクトのコレクションを記述するために使用されます。コレクション内のすべてのオブジェクトに共通のプロパティとメソッドを定義します。オブジェクトはクラスのインスタンスです。メソッド: クラスで定義された関数。クラス構築メソッド __init__(): クラスには init() という名前の特別なメソッド (構築メソッド) があり、クラスがインスタンス化されるときに自動的に呼び出されます。インスタンス変数: クラスの宣言において、属性を変数で表現したものをインスタンス変数と呼びます。インスタンス変数とは、self で修飾された変数です。インスタンス化: クラスのインスタンス、クラスの特定のオブジェクトを作成します。継承: つまり、派生クラス (派生クラス) は基本クラス (ベースクラス) を継承します。

エラーの理由は、urllib3 ライブラリの例外タイプである NameResolutionError(self.host,self,e)frome です。このエラーの理由は、DNS 解決が失敗したこと、つまり、ホスト名または IP アドレスが試みられたことです。解決できるものが見つかりません。これは、入力された URL アドレスが間違っているか、DNS サーバーが一時的に利用できないことが原因である可能性があります。このエラーを解決する方法 このエラーを解決するにはいくつかの方法があります。 入力された URL アドレスが正しいかどうかを確認し、アクセス可能であることを確認します。 DNS サーバーが利用可能であることを確認します。コマンド ラインで「ping」コマンドを使用してみてください。 DNS サーバーが利用可能かどうかをテストします。プロキシの背後にある場合は、ホスト名の代わりに IP アドレスを使用して Web サイトにアクセスしてみてください。

Web アプリケーション開発に PHP を使用する場合、多くの場合データベースを使用する必要があります。データベースを使用すると、エラー メッセージがよく発生します。その中でも、PHPFatalerror: Calltoamemberfunctionfetch() は、PDO を使用してデータベースをクエリするときに発生する比較的一般的なエラーです。では、このエラーの原因と解決方法は何でしょうか?この記事ではそれについて詳しく説明します。 1. エラーの原因

クラスとはPythonでクラスを定義するためのキーワードです クラスの定義方法:classの後ろにスペースを入れてからクラス名を追加します; クラス名のルール:最初の文字を大文字にします 複数の単語がある場合はキャメルケースを使用してください[class Dog()] などの名前付け。

jQuery は、Web 開発で広く使用されている古典的な JavaScript ライブラリで、イベントの処理、DOM 要素の操作、Web ページ上でのアニメーションの実行などの操作を簡素化します。 jQueryを使っていると要素のクラス名を置き換える場面がよくありますが、この記事ではその実践的な方法と具体的なコード例を紹介します。 1.removeClass() メソッドと addClass() メソッドを使用する jQuery には、削除用の RemoveClass() メソッドが用意されています。

Python で self の使用法を紹介する前に、まず Python のクラスとインスタンスを紹介しましょう。オブジェクト指向の最も重要な概念はクラスとインスタンスであることはわかっています。クラスは抽象的なテンプレートです。学生のような抽象的なものです。 Student クラスによって表されます。インスタンスはクラスに基づいて作成された特定の「オブジェクト」であり、各オブジェクトはクラスから同じメソッドを継承しますが、そのデータは異なる場合があります。 1. Student クラスを例にします。Python では、クラスは次のように定義されます: classStudent(object):pass(Object) は、クラスがどのクラスから継承するかを示します。Object クラスはすべて

PHP コードを記述するとき、クラスを使用するのは非常に一般的な方法です。クラスを使用すると、関連する関数とデータを 1 つのユニットにカプセル化できるため、コードがより明確になり、読みやすく、保守しやすくなります。この記事では、PHPClass の使用法を詳しく紹介し、クラスを適用して実際のプロジェクトでコードを最適化する方法を読者がよりよく理解できるように、具体的なコード例を示します。 1. クラスの作成と使用 PHP では、キーワード class を使用してクラスを定義し、クラス内のプロパティとメソッドを定義できます。

Vue エラー: v-bind を使用してクラスとスタイルを正しくバインドできません。解決方法は? Vue 開発では、v-bind 命令を使用してクラスとスタイルを動的にバインドすることがよくありますが、v-bind を正しく使用してクラスとスタイルをバインドできないなどの問題が発生することがあります。この記事では、この問題の原因と解決策を説明します。まず、v-bind ディレクティブを理解しましょう。 v-bind は V をバインドするために使用されます
