PHP で仮想プロキシを使用して遅延読み込みテクノロジを実装する、phploading_PHP チュートリアル
PHP で仮想プロキシを使用して、遅延読み込みテクノロジ、PHP ローディングを実装します
ちなみに、私はこれを Martin の「Enterprise Application Architecture Patterns」から学びました。これは PHP 動的言語の機能を支援し、仮想プロキシ プレースホルダーを通じて Java よりもはるかに簡単に遅延読み込みを実装できます。唯一の欠陥は、組み込みの基本タイプではなく、オブジェクトのみをプロキシできることです。
私が試した PHP ドメイン モデルの設計では、これを使用して DomainObject の遅延読み込みを実装しました。
* 仮想プロキシでは、メンバーにアクセスされた場合にのみ、クロージャ関数が呼び出され、ターゲット オブジェクトが生成されます。
*
* @作者tonyseek
*
*/
クラスVirtualProxy
{
プライベート $holder = null;
private $loader = null;
/**
* * 仮想プロキシ。メンバーにアクセスされた場合にのみクロージャ関数が呼び出され、ターゲット オブジェクトが生成されます。
*
* @param Closure $loader はプロキシオブジェクトのクロージャ関数を生成します
*/
パブリック関数 __construct(Closure $loader)
{
$this->loader = $loader;
}
/**
* * プロキシメンバーメソッドの呼び出し
*
* @param string $method
* @param 配列 $arguments
* @throws BadMethodCallException
* @return 混合
*/
パブリック関数 __call($method, 配列 $arguments = null)
{
$this->check();
if (!method_exists($this->holder, $method)) {
throw new BadMethodCallException();
}
return call_user_func_array(
array(&$this->holder, $method),
$arguments);
}
/**
* プロキシメンバー属性の読み取り
*
* @param string $property
* @throws ErrorException
* @return 混合
*/
パブリック関数 __get($property)
{
$this->check();
if (!isset($this->holder->$property)) {
throw new ErrorException();
}
return $this->holder->$property;
}
/**
* プロキシメンバー属性の割り当て
*
* @param string $property
* @param 混合 $value
*/
パブリック関数 __set($property, $value)
{
$this->check();
$this->holder->$property = $value;
}
/**
※プロキシオブジェクトが既に存在するか確認し、存在しない場合は生成します。
*/
プライベート関数 check()
{
If (null == $this->holder) {
$loader = $this->loader;
$this->holder = $loader();
}
}
}
// テスト
$v = 新しい VirtualProxy(function(){
echo 'Now, Loading', "n";
$a = 新しい ArrayObject(range(1,100));
$a->abc = 'a';
//実際の使用ではここでDataMapperのfindXXXメソッドを呼び出します
// ドメイン オブジェクトのコレクションを返します
$a を返します;
});
//プロキシオブジェクトはオリジナルオブジェクトとして直接アクセスされます
// この時、コンストラクターで渡されたコールバック関数が呼び出されます
//これにより、オブジェクト操作の読み込みの遅延が実現します
echo $v->abc . $v->offsetGet(50);
最初に表示されたコンテンツをバッファからプッシュします。後続のコンテンツが出てくるかどうかは、前のコンテンツには影響しません。 . .
簡単なコードは次のとおりです:
//重要
echo rand(),'最初に出てきたもの
';
ob_flush();
flush();
/ /重要ではありません。 . .
include "big.avi";
sleep(3);
ob_flush();
?>
追加した質問から、上記のコードが無駄に書かれていることがわかりました。
裸の馬~ 結局のところ、必要なのは ajax 遅延ロードだけです!
PHP での遅延ロードは、最終的にはオンデマンドでファイルをロードし、オンデマンドでオブジェクトをインスタンス化することです。
オンデマンドでのインスタンス化は、上記のメソッドを使用して実装できますが、より多くの場合、プロキシが使用されます。ローダーが処理します

ホット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 は、

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます
