ФорумПрограммированиеPHP для идиотовPHP и ООП → Реализация ООП через точку на пхп (как в руби или как в jquery)

Реализация ООП через точку на пхп (как в руби или как в jquery)

  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 15 марта 2011 г. 2:00, спустя 33 минуты 9 секунд

    Очень хочется кодить через точку, а именно переписать вообще на пхп принцип манипуляций с данными как в Active Records ROR

    Нихуять понять, не могу чем тебя ROR не устраивает?

  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 15 марта 2011 г. 5:35, спустя 3 часа 34 минуты 57 секунд

    @post = Table.find(params[:post_id])
    @post.destroy


    class Controller {
    function __get($name){
    if (preg_match('#^[A-Z]#', $name)){ // верхний регистр?
    $this->$name = new $name; // автозагрузка модели
    }
    }
    }

    class Blog extends Contolller {

    function delete_post($params){
    $post = $this->Posts->find($params['post_id']);
    $post->destroy();
    }

    function view($params){
    $post = $this->Posts->find($params['post_id']);
    $comments = $this->Comments->find_by_post_id($params['post_id']);
    return compact('post', 'comments'); // массив автоматом передаётся во вьюху
    }

    }


    $params['post_id'] - объект, реализующий ArrayAccess
    find_by_* реализуется с помощью __call
    эта схема больше всего похожа на рельсовую с той разницей что в руби методы объекта вызываются неявно, а в пхп через $this->
    Спустя 142 сек.
    Можно сделать передачу параметров во вьюху как в рельсах:


    class Blog extends Contolller {

    function view($params){
    $this->post = $this->Posts->find($params['post_id']);
    $this->comments = $this->Comments->find_by_post_id($params['post_id']);
    // после выполнения этой функции все переменные текущего контроллера, начинающиеся с нижнего регистра, передаются во вьюху автоматически
    }

    }
    не всё полезно, что в swap полезло
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 15 марта 2011 г. 10:52, спустя 5 часов 16 минут 34 секунды

    .Net MVC 3 рулит…
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 15 марта 2011 г. 11:32, спустя 40 минут 23 секунды

    плюсую
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!