# Zend_Ldap_Node_Schema

ベンダー固有のサブクラス全てで下記のメソッドが利用可能です。

`Zend_Ldap_Node_Schema` は、 名前により属性にアクセスするための `__get()` 及び `__isset()` マジック・プロパティー・アクセッサを含みます。 それらはそれぞれ、 `Zend_Ldap_Node_Schema::getAttribute()` 及び `Zend_Ldap_Node_Schema::existsAttribute()` を代理します。 `__set()` 及び `__unset()` も実装されます。 しかし、 RootDSE ノードで認められない変更次第では `BadMethodCallException` をスローします。 さらに、属性に配列のようにアクセスするために クラスは `ArrayAccess` を実装します。 `offsetSet()` 及び `offsetUnset()` も 明白な理由に起因する `BadMethodCallException` をスローします。

## Zend_Ldap_Node_Schema API

メソッド | 説明
--- | ---
`Zend_Ldap_Dn getDn()` | Zend_Ldap_Dn として現行ノードの DN を取得します。
`string getDnString(string $caseFold)` | 文字列として現行ノードの DN を取得します
`array getDnArray(string $caseFold)` | 配列として現行ノードの DN を取得します
`string getRdnString(string $caseFold)` | 文字列として現行ノードの RDN を取得します
`array getRdnArray(string $caseFold)` | 配列として現行ノードの RDN を取得します
`array getObjectClass()` | ノードの objectClass を返します
`string toString()` | 現行ノードの DN を返します。 `Zend_Ldap_Dn::getDnString()` の代理です
`string __toString()` | 文字列表現にキャストします。 `Zend_Ldap_Dn::toString()` の代理です
`array toArray(boolean $includeSystemAttributes)` | 現行ノードの配列表現を返します。 もし `$includeSystemAttributes` が `false` (既定値は `true`) なら、システム固有の属性は配列から除去されます。 `Zend_Ldap_Node_Schema::getAttributes()` とは異なり、 結果の配列には キー `'dn'` をもつ DN を含みます。
`string toJson(boolean $includeSystemAttributes)` | `Zend_Ldap_Node_Schema::toArray()` を用いて 現行ノードの JSON 表現を返します。
`array getData(boolean $includeSystemAttributes)` | ノードの属性を返します。 配列は属性全てをその内部フォーマットに含みます。(変換無し)
`boolean existsAttribute(string $name, boolean $emptyExists)` | 与えられた属性が存在するかどうかチェックします。 もし `$emptyExists` が `false` なら、 空の属性 (array() のみを含む) は、 `false` を返す、存在しないものとして扱われます。 もし `$emptyExists` が true なら、 空の属性は `true` を返す、存在するものとして扱われます。 この場合、属性の名前がキーの集合に欠落している場合のみ、 メソッドは `false` を返します。
`boolean attributeHasValue(string $name, mixed|array $value)` | 与えられた値が属性に存在するかチェックします。 `$value` 内の値全てが属性に現れる場合のみ、 メソッドは `true` を返します。 比較は厳格に行なわれます。（データ型を考慮します）
`integer count()` | ノードの属性数を返します。 Countable を実装します。
`mixed getAttribute(string $name, integer|null $index)` | LDAP 属性を取得します。データ変換は `Zend_Ldap_Attribute::getAttribute()` を使って適用されます。
`array getAttributes(boolean $includeSystemAttributes)` | ノードの属性全てを取得します。もし `$includeSystemAttributes` が `false` なら、 (既定は `true`) システム固有の属性は配列から除去されます。
`array|integer getDateTimeAttribute(string $name, integer|null $index)` | LDAP の日付／時刻属性を取得します。データ変換は `Zend_Ldap_Attribute::getDateTimeAttribute()` を使って適用されます。
`Zend_Ldap_Node_Schema reload(Zend_Ldap $ldap)` | 与えられた LDAP サーバから現行ノードの属性を再読み込みします。
`Zend_Ldap_Node_Schema create(Zend_Ldap $ldap)` | Schema ノードを生成するファクトリー・メソッド
`array getAttributeTypes()` | 属性のタイプを ``. の配列として取得します。
`array getObjectClasses()` | オブジェクトクラスを `Zend_Ldap_Node_Schema_ObjectClass_Interface` の配列として取得します。

## Zend_Ldap_Node_Schema_AttributeType_Interface API

メソッド | 説明
--- | ---
`string getName()` | 属性名を取得します
`string getOid()` | 属性の OID を取得します
`string getSyntax()` | 属性の構文を取得します
`int|null getMaxLength()` | 属性の最大長を取得します
`boolean isSingleValued()` | 属性が単一の値かどうか返します
`string getDescription()` | 属性の説明を取得します

## Zend_Ldap_Node_Schema_ObjectClass_Interface API

メソッド | 説明
--- | ---
`string getName()` | objectClass の名前を返します
`string getOid()` | objectClass の OID を返します
`array getMustContain()` | この objectClass が含まなければいけない属性を返します
`array getMayContain()` | この objectClass が含むかもしれない属性を返します
`string getDescription()` | 属性の説明を返します

`integer getType()`

objectClass のタイプを返します。 このメソッドは下記の値のうちの一つを返します。

`Zend_Ldap_Node_Schema::OBJECTCLASS_TYPE_UNKNOWN`

  未知のクラス用

`Zend_Ldap_Node_Schema::OBJECTCLASS_TYPE_STRUCTURAL`

  構造クラス用

`Zend_Ldap_Node_Schema::OBJECTCLASS_TYPE_ABSTRACT`

  抽象クラス用

`Zend_Ldap_Node_Schema::OBJECTCLASS_TYPE_AUXILIARY`

  補助クラス用

`array getParentClasses()` | このクラスの親の（複数の） objectClass を返します。 これは構造、抽象、補助 objectClass を含みます。

クラスが表現する属性のタイプ及びオブジェクトクラスは、 基礎となる LDAP ノード上の任意の属性にアクセスするための いくつかのコアメソッドを提供する `Zend_Ldap_Node_Schema_Item` を拡張します。 `Zend_Ldap_Node_Schema_Item` は 名前により属性にアクセスするためのマジック・プロパティー・アクセッサ `__get()` 及び `__isset()` を含みます。 さらに、属性に配列のようにアクセスするために、 クラスは `ArrayAccess` を実装します。 `offsetSet()` 及び `offsetUnset()` は、 スキーマ情報ノードで認められない変更次第では `BadMethodCallException` をスローします。

## Zend_Ldap_Node_Schema_Item API

メソッド | 説明
--- | ---
`array getData()` | スキーマ情報ノードから基礎となる全てのデータを取得します。
`integer count()` | スキーマ情報ノード内の属性数を返します。 Countable を実装します。

## OpenLDAP

さらに、上記の共通メソッドが `Zend_Ldap_Node_Schema_OpenLDAP` のインスタンスに適用されます。

### Zend_Ldap_Node_Schema_OpenLDAP API

メソッド | 説明
--- | ---
`array getLdapSyntaxes()` | LDAP 構文を取得します
`array getMatchingRules()` | 一致するルールを取得します
`array getMatchingRuleUse()` | 一致するルールの使用法を取得します

### Zend_Ldap_Node_Schema_AttributeType_OpenLDAP API

メソッド | 説明
--- | ---
`Zend_Ldap_Node_Schema_AttributeType_OpenLdap|null getParent()` | もし存在すれば、継承ツリー内の親の属性タイプを返します

### Zend_Ldap_Node_Schema_ObjectClass_OpenLDAP API

メソッド | 説明
--- | ---
`array getParents()` | もし存在すれば、継承ツリー内の（複数の）親オブジェクトクラスを返します 返される配列は、 `Zend_Ldap_Node_Schema_ObjectClass_OpenLdap`の配列です。

## ActiveDirectory

### ActiveDirectory サーバ上でのスキーマ・ブラウジング

包括的探索ルーチンで返されるエントリーの数に関する Microsoft ActiveDirectory サーバでの、規制のため、 および、 ActiveDirectory スキーマ・リポジトリの構造のため、 スキーマ・ブラウジングは、現在 Microsoft ActiveDirectory サーバでは利用可能 ではありません。

`Zend_Ldap_Node_Schema_ActiveDirectory` は、いかなる追加メソッドも提供しません。

### Zend_Ldap_Node_Schema_AttributeType_ActiveDirectory API

`Zend_Ldap_Node_Schema_AttributeType_ActiveDirectory` は、いかなる追加メソッドも提供しません

### Zend_Ldap_Node_Schema_ObjectClass_ActiveDirectory API

`Zend_Ldap_Node_Schema_ObjectClass_ActiveDirectory` は、いかなる追加メソッドも提供しません