如何在cakephp 1.3中使用独立类?

时间:2010-07-22 23:21:26

标签: php class cakephp cakephp-1.3

我有一个用PHP编写的独立类,用于一些非常基本的LDAP / AD函数。我想在我正在使用cakephp的项目中使用这个类。

看起来像在cakephp 1.2中我可以将该类添加为供应商,但看起来像cakephp 1.3删除了对供应商的支持。那么我该如何从这个类中调用一些函数呢?

(我想尝试保持类本身不变,不要把它变成插件,因为这似乎是不必要的)

谢谢!

以下代码:

**<?php
class UsersController extends AppController {

var $name = 'Users';

    //commented out because it breaks the script
    //App::import('Lib', 'ldap');


function index() {
    $this->User->recursive = 0;
    $this->set('users', $this->paginate());
}

    function login() {

        if (!empty($this->data)) {
                if ($ldap->auth($this->data['User']['user'],$this->data['User']['password'])) {
                        $this->Session->setFlash(__('The user has been saved', true));
                        $this->Session->write('user', $this->data['User']['user']);
                        $this->redirect(array('action' => 'index'));
                } else {
                        $this->Session->setFlash(__('Login Failed', true));
                }
        }
    }

    function logout() {
        $this->Session->delete('user');
        $this->redirect($this->referer());

    }

function view($id = null) {
    if (!$id) {
        $this->Session->setFlash(__('Invalid user', true));
        $this->redirect(array('action' => 'index'));
    }
    $this->set('user', $this->User->read(null, $id));
}

function add() {
    if (!empty($this->data)) {
        $this->User->create();
        if ($this->User->save($this->data)) {
            $this->Session->setFlash(__('The user has been saved', true));
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The user could not be saved. Please, try again.', true));
        }
    }
    $projects = $this->User->Project->find('list');
    $this->set(compact('projects'));
}

function edit($id = null) {
    if (!$id && empty($this->data)) {
        $this->Session->setFlash(__('Invalid user', true));
        $this->redirect(array('action' => 'index'));
    }
    if (!empty($this->data)) {
        if ($this->User->save($this->data)) {
            $this->Session->setFlash(__('The user has been saved', true));
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The user could not be saved. Please, try again.', true));
        }
    }
    if (empty($this->data)) {
        $this->data = $this->User->read(null, $id);
    }
    $projects = $this->User->Project->find('list');
    $this->set(compact('projects'));
}

function delete($id = null) {
    if (!$id) {
        $this->Session->setFlash(__('Invalid id for user', true));
        $this->redirect(array('action'=>'index'));
    }
    if ($this->User->delete($id)) {
        $this->Session->setFlash(__('User deleted', true));
        $this->redirect(array('action'=>'index'));
    }
    $this->Session->setFlash(__('User was not deleted', true));
    $this->redirect(array('action' => 'index'));
}
}
?>**

2 个答案:

答案 0 :(得分:8)

Cake 1.3仍然完美支持供应商文件的想法。此外,他们now also support "libraries",不是第三方类的其他类。只需将您的文件弹出到/vendors/libs目录,然后使用App::import加载文件。

答案 1 :(得分:3)

我得到了它的工作,我不得不称之为“App :: import('Lib','ldap');”在控制器类之外,然后将其作为我想要的函数内的新类调用。

以下是最终结果

<?php
App::import('Lib', 'ldap');
class UsersController extends AppController {

    var $name = 'Users';

    function index() {
        $this->User->recursive = 0;
        $this->set('users', $this->paginate());
    }

        function login() {

            if (!empty($this->data)) {
                $ldap = new ldap;
                    if ($ldap->auth($this->data['User']['user'],$this->data['User']['password'])) {

                            if (!$this->User->findByUser($this->data['User']['user']) )
                            {
                                $ldap_info = $ldap->getInfo($this->data['User']['user']);
                                $this->data['User']['name'] = $ldap_info['name'];
                                $this->add();
                            }

                            $this->Session->write('user', $this->data['User']['user']);
                            $this->redirect(array('action' => 'index'));
                    } else {
                            $this->Session->setFlash(__('Login Failed', true));
                    }
            }
        }

        function logout() {
            $this->Session->delete('user');
            $this->redirect($this->referer());

        }

    function view($id = null) {
        if (!$id) {
            $this->Session->setFlash(__('Invalid user', true));
            $this->redirect(array('action' => 'index'));
        }
        $this->set('user', $this->User->read(null, $id));
    }

    private function add() {
        if (!empty($this->data)) {
            $this->User->create();
            if ($this->User->save($this->data)) {
                $this->Session->setFlash(__('The user has been saved', true));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('The user could not be saved. Please, try again.', true));
            }
        }
        $projects = $this->User->Project->find('list');
        $this->set(compact('projects'));
    }

    function edit($id = null) {
        if (!$id && empty($this->data)) {
            $this->Session->setFlash(__('Invalid user', true));
            $this->redirect(array('action' => 'index'));
        }
        if (!empty($this->data)) {
            if ($this->User->save($this->data)) {
                $this->Session->setFlash(__('The user has been saved', true));
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('The user could not be saved. Please, try again.', true));
            }
        }
        if (empty($this->data)) {
            $this->data = $this->User->read(null, $id);
        }
        $projects = $this->User->Project->find('list');
        $this->set(compact('projects'));
    }

    function delete($id = null) {
        if (!$id) {
            $this->Session->setFlash(__('Invalid id for user', true));
            $this->redirect(array('action'=>'index'));
        }
        if ($this->User->delete($id)) {
            $this->Session->setFlash(__('User deleted', true));
            $this->redirect(array('action'=>'index'));
        }
        $this->Session->setFlash(__('User was not deleted', true));
        $this->redirect(array('action' => 'index'));
    }
}
?>