小さな Web アプリケーションを構築しようとしていますが、ページのさまざまな部分の間で通信する方法がわかりません。特定の機能を使用して、質問を示します。
私のページはすべて汎用ツールバーを使用しています。このツールバーは複数のページで使用されるため、独自の PHP ファイルに含まれています。
<?php include("../toolbar.php"); ?>
ツールバーにはログイン ボタンがあります。クリックすると、モーダル ログイン ダイアログが開きます (この場合は Facebook ログイン ダイアログ)。ユーザーがログインすると、そのユーザーの名前がツールバーに表示され、ログイン ボタンが「ログアウト」ボタンに置き換えられます。この動作はユーザーがどのページを表示していても同じであるため、モーダルでログインを表示し、ユーザー名/ボタンを適切に更新するように toolbar.js ファイルを作成しました。
ただし、ほとんどのページでは、ツールバーからログインまたはログアウトすると、メイン ページのコンテンツも更新する必要があります。ログイン状態が変化したときに、toolbar.php を含むすべてのページが何かをしなければならないことを保証することはできませんが、ほとんどの場合はそうなるでしょう。
同様に、その逆も可能です。特定のページには、ツールバーの外側に「ログイン」ボタンがある場合があります。これを使用する場合、ツールバーを更新する必要があります。
これを処理する最善の方法は何ですか?
現在の実装 - これはひどいかもしれません…</p>
toolbar.js では、基本的に、ユーザーがログインするたびに (およびログアウトに相当する) 関数「userSignedIn」を呼び出しています。toolbar.js は、これ自体を実装します (ボタンとユーザー名ラベルを更新する必要があります)。
次に、メイン ページ (mainPage.php と呼びましょう) に何か追加する必要がある場合は、この同じ関数を再利用して追加のアクションを「追加」します。そのページの読み込み時に、次のことを行います。
var originalUserSignedIn = userSignedIn;
userSignedIn = function() {
originalUserSignedIn();
customUserSignedIn();
}
customUserSignedIn は、追加のアクションを実行する mainPage.js 内の関数です。逆の解決策はまだ実装していません (mainPage.php からサインインするには、toolbar.php を更新する必要があります)。
私はObjective-Cのバックグラウンドから来たと思いますが、メソッドの実装で「スーパー」を呼び出すことに似た何かを試みています。