native = $handle; } protected function release() { $native = $this->native; $this->native = null; return $native; } function __destruct() { // Should have been destroyed and released by derived resource assert($this->native == null); unset(self::$resources[spl_object_hash($this)]); } }