1

私は、PHP オブジェクトをメモリに永続的に固定し、ページ要求を処理する通常のジョブ中にメッセージを送信するための他のより一時的なオブジェクトで使用できるようにする簡単な方法を考えようとしています。私はまだWordpressに比較的慣れていないので、複雑にしすぎているのかもしれません...例を通して、私ができるようにしたいことを示しましょう:

  1. imperial単位のリスト、デフォルトの単位、単位のカテゴリ (たとえば、ポンドは単位です)、変換率などについてデータベースをポーリングする UOM (単位の) オブジェクトを起動時にロードします。
  2. UOM 変換またはルックアップを使用する後続のサービス リクエストでは、単にグローバル UOM オブジェクト ( $UOM->get_measures_for_category ('speed')) を呼び出します。このオブジェクトはすでにメモリー内にあるため、リクエストを処理するためにデータベースに戻る必要はありません。
  3. UOMのupdate()メソッドを使用すると、イベントまたはタイミング ベースのトリガーで、UOM オブジェクト自体の更新を要求できます。

これは、サービス要求によって定期的に使用される比較的静的なデータ セットが存在し、データベースに対して繰り返しクエリを実行すると無駄になる場合の一例にすぎません。うまくいけば、人々はこのパターンに精通しており、Wordpress/PHP 環境でこれを行う方法の例をいくつか教えてくれるかもしれません.

4

2 に答える 2

3

あなたが望むもののために、これはそれを行う最良の方法ではありません。ただし、あなたが話していることには、PHP の基本的な原則の 1 つと、一般的にスコープとして知られるプログラミング、つまりグローバル スコープとは何かに関する知識が必要です。

したがって、これをグローバル スコープで宣言すると、次のようになります。

 $uom = new UOM_Class();

その後、任意のファイルに次のように記述します。

global $uom;
$uom->something();

それが動作します。

ただし、これはすべて無駄です。代わりに、静的メソッド、およびシングルトンパターンのようなものを使用することをお勧めします。

UOM::Something();

シングルトンとは何か、スコープとは何かを学ぶのはあなたの課題として残しておきます。これらは PHP の基本的な原則であり、スコープを知らずに PHP を知っていると主張するべきではありません。それを言い換える最良の方法は、日常会話ではcontextと呼ばれ、グローバル スコープは全員の耳で同時に叫んでいるようなものです。誰もがアクセスでき、汚染したくないものではありません

少し厳しいようでしたら申し訳ありませんが、ここに役立つはずの記事がいくつかあります。スコープ、シングルトン、およびオブジェクトファクトリなど、それを行うためのその他の方法について説明しています

http://php.net/manual/en/language.variables.scope.php http://www.homeandlearn.co.uk/php/php8p2.html

http://php.net/manual/en/language.oop5.patterns.php

于 2012-05-13T12:42:42.550 に答える