ホームページ  >  記事  >  バックエンド開発  >  PHP 抽象ファクトリ パターン (Elgg) のファーストコンタクト_PHP チュートリアル

PHP 抽象ファクトリ パターン (Elgg) のファーストコンタクト_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:39:501131ブラウズ

このような機能を実装したいと考えています。Web サイトの招待アクティビティを起動し、参加者 (所有者) が、宣伝された Web サイトのアドレスのリンクを友人に送信します。友人がリンクをクリックすると、Web サイトに正常に登録され、所有者の番号が送信されます。招待ログのレコードが 1 つ増加します。
アクティビティ クラス Activity

コードをコピー コードは次のとおりです:

class Activity extends ElggEntity {
private $strategy; //ストラテジ インスタンスの保存に使用されます
public function __construction($guid) {
.. .
$ this->load($guid); //エンティティをロードします
}
public function addLog($data) {
$this->strategy->addLog($data); //実際には DEFAULTActivityStrategy:: addLog ($data)
}
public function load ($guid) {
if (parent::load($guid)) { //このプロセスはデータベースからこのインスタンスのすべてのプロパティを割り当てるため、 $this-> StrategyName の値が割り当てられています。
if ($this->strategyName != '') {
$this->strategy = AbstractActivityStrategy::getInstance($this->strategyName) // 戦略クラスをロードします
}
return true; return false;
}
}


Log class ActivityLog


コードをコピーする コードは次のとおりです:
class ActivityLog extends ElggEntity {
$private countValue;
}


Strategy クラス
説明: ElggEntity: すべてのエンティティの基本クラス。 AbstractActivityStrategy: アクティビティ抽象クラス
) まず、アクティビティを作成します:



コードをコピーします
コードは次のとおりです: $activity = new Activity();
$activity->name = 'KKND'; //アクティビティ名
$activity->strategyName = 'DEFAULT'; //ストラテジ名
$activity->save(); //アクティビティ クラスをデータベースに保存すると、新しく追加された属性 (strategyName など)保存することもできます


) 他の人が招待を受け取ってリンクをクリックすると、所有者の招待レコードエントリ +1
たとえば、招待 URL は http://www.xinwusi.com/KKND/1234 です
/KKND / はイベント名、1234 は所有者の GUID であると仮定します。その場合、
$activity = new Activity(8888) //アクティビティ エンティティを取得します
$activity->addLog($data); // 招待レコードを追加します。 $data には、所有者の GUID、アクティビティ GUID、アクティビティ名などが含まれます。
コードの最後の 2 行のプロセスは、アクティビティ エンティティの戦略名を読み取り、この戦略名に基づいて戦略エンティティを生成し、それを独自の $stragety 属性に保存し、addLog メソッドを呼び出してログ レコードを追加します。 。
今後新しいアクティビティが発生した場合、アクティビティ インスタンス属性のストラテジ名を直接変更し、新しいストラテジに対応するメソッドを呼び出すことができます。



コードをコピーします
コードは次のとおりです: class DEFAULTActivityStrategy extends AbstractActivityStrategy {
...
public function addLog($data) {
$activityLog = new ActivityLog(); activityLog->save();
$activityLogAmount = new ActivityLogAmount(); //カウントクラス
$activityLogAmount->countValue += 1;
}





http://www.bkjia.com/PHPjc/321487.html

www.bkjia.com
tru​​e

http://www.bkjia.com/PHPjc/321487.html

このような機能を実現したいと考えています。Web サイトへの招待アクティビティを開始し、参加者 (所有者) が宣伝された Web サイトのアドレスのリンクを友人に送信し、友人がそのリンクをクリックすると、所有者の Web サイトに正常に登録されます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。