/** * Factory method to create the Schema node. * * @param \Zend\LDAP\LDAP $ldap * @return \Zend\LDAP\Node\Schema\Schema * @throws \Zend\LDAP\Exception */ public static function create(LDAP\LDAP $ldap) { $dn = $ldap->getRootDse()->getSchemaDn(); $data = $ldap->getEntry($dn, array('*', '+'), true); switch ($ldap->getRootDse()->getServerType()) { case RootDSE\RootDSE::SERVER_TYPE_ACTIVEDIRECTORY: return new ActiveDirectory($dn, $data, $ldap); case RootDSE\RootDSE::SERVER_TYPE_OPENLDAP: return new OpenLDAP($dn, $data, $ldap); case RootDSE\RootDSE::SERVER_TYPE_EDIRECTORY: default: return new self($dn, $data, $ldap); } }