| ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot |
メソッドの概要メソッドの概要 –
Calendar API の要約
メソッドの概要メインとなるカレンダーのクラス (Calendar のサブクラス) はすべて共通 API (共通のクラスメソッド) を共有しています。あるクラスでは細かなバリエーションがありますが、なにが利用できるかを一度知ってしまえば、直感的に理解し、容易に思い出すことができるでしょう。このセクションでは共通のメソッドを要約し、このバリエーションを強調します。詳しい情報は API のドキュメントをみてください。 コンストラクタデータクラスのコンストラクタは日付の数値を引数にとります。年のはじまり (左側) から秒 (右側) までです。これはあなたの利用するクラスに依存します。たとえば、
<?php
表形式のクラスである Calendar_Month_Weekdays と Calendar_Month_Weeks は、どちらもオプションで 3 番目の引数をとることに注意しましょう。この引数 (integer) は週の最初の曜日を決定し、表形式の表示を調整します (デフォルトは月曜日(1)です - 例えば、数値を 0 に変更すると日曜日が週の最初の曜日になります)。Calendar_Week は、コンストラクタの 4 番目の引数で週の最初の曜日を引数として受け取ることができます。 位置づけ用メソッドすべての日付クラス・表形式日付クラスは、抽象基本クラスの Calendar で定義されたメソッドを共有しています。これらの中にはオブジェクト自体の日付を識別するメソッドや以前の日付、次の日付を識別するメソッドがあります。例えば、
<?php
$Day からは、日付だけではなく月 (あるいは年/時間/分/秒) も取得できることに注目しましょう。また、前日が 9 月であることをきちんと考慮したうえで、prevDay() が 30 を返していることにも注目しましょう。this***()、prev***() と next***() メソッドは、年・月・日・時・分・秒のそれぞれに対応するものが存在します。 これらのメソッドに TRUE を渡すと、タイムスタンプ形式で結果をかえします (タイムスタンプの形式は使用しているカレンダーエンジンによります。FAQ を参照ください)。例えば、
<?php
取得するために呼び出されたメソッドによって、タイムスタンプの増加量が異なることに注目しましょう。最初の値は thisYear(TRUE)() によって得られたタイムスタンプで、2003 年のはじまり (つまり 2003 年 1 月 1 日) のものです。一方で、3 つめのものは thisDay(TRUE)() によって得られたタイムスタンプで、2003 年 10 月 25 日のものです。
thisWeek(), prevWeek() および nextWeek() といったメソッドもあります。これらのメソッドはCalendar_Week のインスタンスを使用している場合のみ利用することができます。返される値のフォーマットは'timestamp', 'n_in_month', 'n_in_year' あるいは 'array' の中から選択することができます。'n_in_month' を選択した場合に、月のはじまりか終わりになってしまった場合には NULL 値が返されることに注意してください。 最後になりますが、すべてのカレンダーオブジェクトは getTimeStamp() と setTimeStamp() メソッドを提供します。前者はあなたが利用しているカレンダーエンジンのフォーマットでのタイムスタンプを返します (例えば、もしデフォルトの Unix タイムエンジンを使用しているなら、Unix 形式のYYYY-MM-DD HH:MM:SS というフォーマットのタイムスタンプです)。後者はカレンダーオブジェクトが構築した値を変換するのに用いたタイムスタンプを除外します。 構築および取得すべての日付クラス、表形式の日付クラスは、データオブジェクトの子供を作るためのbuild() メソッドを持っています。たとえば、Calendar_Month は月の"子供"の存在である Calendar_Day オブジェクトをビルドします。 一度 build() が呼び出されると、子供は単純な fetch() イテレータを使用して日付オブジェクトから取り出すことができます。例えば、
<?php
fetch()メソッドは、日付の昇順で 1 回に 1 つの子供を返します。もうそれ以上子供が見つからない場合には FALSE を返します。そして自動的に内部の子供の集合がリセットされます。よって好きな回数だけこれらをループさせて使用することができます。 もしあなたがこのようなイテレータを好まず、独自のものを使用したいと望むなら、単純に子供を fetchAll() メソッド (子供の日付オブジェクトをインデックス化された配列で返します) で取り出し、size() でその数をチェックすることができます。fetchAll() で返されるインデックスに注意してください。Calendar_Year, Calendar_Month, Calendar_Month_Weekdays, Calendar_Month_Weeks そして Calendar_Weekではインデックスの最初の値は 1 です。一方で、Calendar_Day, Calendar_Hour, Calendar_Minute そして Calendar_Second ではインデックスの最初の値は 0 です。なぜでしょうか? 次のような表記を考えてみてください。 2003-1-1 00:00:00 ... 注意: Calendar_Second::build() は実際には何もしません。これは子要素をもたないからです。 子要素の選択カレンダーのレンダリングを簡単にするために、build() メソッドは子供のオブジェクトと比較する日付オブジェクトの配列を受け取ることができます (どの日付のオブジェクトやtabular日付のオブジェクトでも利用することができます)。配列のオブジェクトが子要素とマッチする場合は、その要素が選択状態となり、isSelected()メソッド (これはあらゆる日付オブジェクト・表形式日付オブジェクトで使用可能です) は TRUE を返します。例えば、
<?php
上の例では、2003 年 10 月 15 日と 2003 年 10 月 23 日だけが表示されます。 build() に渡したオブジェクトのうち、子要素とマッチするオブジェクトは子要素を置き換えます (つまり、マッチした要素については、その要素がそのまま戻されます)。これをうまく利用すると、オブジェクトをループの中に "組み込む" ことができるようになります。一般的には、これは Calendar_Decorator を拡張することによって行います。 注意: Calendar_Year::build() メソッドは 2 番目の引数に週のはじまりの曜日をとります (コンストラクタに関する上の記述を参照ください)。 表形式の日付Calendar_Day クラスは 3 つの独自のメソッドを持っています。これらのメソッドは他のクラスには存在せず、純粋に表形式カレンダーを作成するために用いられます。isEmpty() は日にちが空白かどうかを判断するために用いられます (FAQ の空白の日にちの説明を参照してください)。isFirst() と isLast() は週のはじまりと終わりを区別するために使用されます。 あなたがこれらのメソッドを使用する必要があるかどうかは、日付オブジェクトを構築するするのにどのクラスを使用したかによります。もし、日付オブジェクトが Calendar_Month_Weekdays によって構築されたのなら、これら 3 つのメソッドのどれもを利用することができます (空の日付があってもかまいません。Calendar_Month_Weekdays で完全な月を作成し、それぞれの週のはじまりとおわりが区切られるので、isFirst() と isLast() によって判断することができます)。Calendar_Week によって日付が作られれたなら、isEmpty() メソッドだけが利用できます (月の最初と最後の週には空白の日付が含まれる可能性があります)。他の方法で日付オブジェクトが作成された場合、isEmpty(), isFirst() と isLast() は無意味です。 バリデーションすべての日付オブジェクトと表オブジェクト (週を除く) は、自分自身の妥当性を検証する機能をもっています。デフォルトではどのような引数もコンストラクタに渡すことができますが、isValid() メソッドを用いて日付を検証することができます。例えば、
<?php
より精密に検査するには、最初に getValidator() メソッドを呼び出し、Calendar_Validator のインスタンスを受け取ってから検証エラーを調べます。
<?php
あるいは、
<?php
日付を検査するよりは、むしろ adjust() メソッドを使って日付を自動的に調整するほうがよいことに注意してください。
<?php
ここでは、PEAR::Calendar で利用できるメソッドのうち、Decorator クラスによって提供されるものを除くすべてをまとめました。 |
各種マニュアル:
PHPマニュアル |
PEARマニュアル |
Smarty(英語)マニュアル |
PHP-GTKマニュアル |
「メソッドの概要」をGoogle検索
|