新しいエントリの追加は、二段階の手順を踏んで行います。 まずは新しい Net_LDAP_Entry オブジェクトを作成する必要があります。その後、 Net_LDAP の add() メソッドを使って次のようにエントリを追加していきます。
新規エントリの追加
<?php
// 新規エントリを作成します
$dn = 'cn=new-admin,o=example,dc=org';
$attributes = array(
'cn' => 'new-admin',
'mail' => array('[email protected]', '[email protected]'),
'telephoneNumber' => '1234567890'
);
$entry = Net_LDAP_Entry::createFresh($dn, $attributes);
// そのエントリをディレクトリに追加します
$ldap->add($entry);
?>
エントリの名前の変更や移動は、そのエントリの DN に対する操作となります。 エントリを移動するとは、その DN を新たな名前に変更し、 新たなベース DN にするということです。エントリの名前を変更したり移動したりするには、 そのエントリの dn() メソッドをコールします。 一方、Net_LDAP の move() メソッドを使用することもできます。 これは DN のみを処理します。実際に名前の変更や移動の作業を完了するには、 エントリの update() メソッドをコールする必要があることを覚えておきましょう。 Net_LDAP の move() は、その場でエントリを移動します。 entryobject を Net_LDAP の move() で使用すると、 ディレクトリをまたがる移動もできるようになります。
Net_LDAP_Entry によるエントリの移動
<?php
// 取得したい DN を定義します
$dn = 'cn=admin,o=example,dc=org';
$newdn = 'cn=admin,o=new-example,dc=org';
$entry = $ldap->getEntry($dn);
$entry->dn($newdn);
?>
Net_LDAP と Net_LDAP_Entry によるエントリの移動
<?php
// 取得したい DN を定義します
$dn = 'cn=admin,o=example,dc=org';
$newdn = 'cn=admin,o=new-example,dc=org';
$entry = $ldap->getEntry($dn);
$ldap->move($entry, $newdn);
?>
Net_LDAP と DN によるエントリの移動
<?php
// 取得したい DN を定義します
$dn = 'cn=admin,o=example,dc=org';
$newdn = 'cn=admin2,o=new-example,dc=org';
$ldap->move($dn, $newdn);
?>
ディレクトリをまたがる移動
<?php
// $ldap_src が移動元、そして $ldap_tgt が移動先です
$dn = 'cn=admin,o=example,dc=org';
$newdn = 'cn=admin,o=new-example,dc=org';
$entry = $ldap_src->getEntry($dn);
$ldap_src->move($entry, $newdn, $ldap_tgt);
?>
エントリを削除するには、Net_LDAP
の delete() メソッドを使用します。
このメソッドに、Net_LDAP_Entry
オブジェクトかあるいは削除したいエントリの DN を渡します。
DN がサブエントリを含む場合は、delete()
の 2 番目のパラメータに TRUE
を渡すと再帰的な削除を行います。
もうひとつの方法としては、削除したい Net_LDAP_Entry オブジェクトの delete() メソッドを単純にコールするというものがあります。 この場合、実際に削除処理を完了するには update() をコールする必要があることに注意しましょう。
エントリの削除
<?php
$dn = 'cn=new-admin,o=example,dc=org';
$ldap->delete($dn);
?>
Net_LDAP_Entry オブジェクトによるエントリの削除
<?php
$entry->delete();
$entry->update();
?>