ФорумПрограммированиеPHP для идиотовPHP и ООП → Автоподключение всех классов

Автоподключение всех классов

  • pasha

    Сообщения: 1048 Репутация: N Группа: Адекваты

    Spritz 30 октября 2011 г. 23:07, спустя 1 минуту 35 секунд

    Привет пыха, давно тут небыл, думал что больше не вернусь к php, решил достать книжку Котерова PHP5, прочитать про ООП… intro :)

    Суть такая - есть общий класс и еще куча других классов. Нужно сделать чтобы все методы других классов были видимыми для одного общего. Я прочитал про __autoload, поискал на форуме.

    Прочитал про http://www.ircit.ru/company/blog/ahs/50.php
    Считаю быдло решением, т.к зачем подключать все библиотеки? Или можно обойтись массивом и дергать только те файлы-библиотек которые нам нужны? Да, как их потом "подключить" в классе? Через конструктор?

    И пользуясь случаем, в одном топике нашел пост от NRG.

    <?php
       myClass::myMethod();
       // или так
       $c = new myClass;
       $c->myMethod();

    ?>
    //но, эта принципиально две разные вещи


    почему это принципиально две разные вещи?

    Cпасибо!
  • Frozzeg

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

    Spritz 30 октября 2011 г. 22:58, спустя 23 часа 50 минут 38 секунд

    первое это видимо статический метод

    если конечно в пехопе есть такое понятие как статический ))
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • pasha

    Сообщения: 1048 Репутация: N Группа: Адекваты

    Spritz 30 октября 2011 г. 23:06, спустя 7 минут 47 секунд

    Я кашу наверно написал. Имел ввиду что не круто будет подключать так…

    require_once('libs/Mail.php');
    require_once('libs/Smarty.php');

    require_once('libs/Users.php');

    тут и прибегаем к __autoload ? Правильно?

    Хорошо, как правильно "инициализировать" все эти классы в одном? В конструкторе? Чтобы потом в общем классе обращаться к $this->smarty->… , $this->mail->… , $this->users->…
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 30 октября 2011 г. 23:13, спустя 7 минут 8 секунд

    Pasha, блядь вот тяжело чтоли докумнетацию прочитать к функции про которую ты тут размахиваешь губами?
    Спустя 21 сек.
    там все отлично написано. вот прочитаешь доку и поймешь что все что ты тут написал кроме названия одной функции - полная хуйня
    Сапожник без сапог
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 30 октября 2011 г. 23:51, спустя 37 минут 46 секунд


    И пользуясь случаем, в одном топике нашел пост от NRG.

    <?php
       myClass::myMethod();
       // или так
       $c = new myClass;
       $c->myMethod();

    ?>
    //но, эта принципиально две разные вещи


    почему это принципиально две разные вещи?

    Cпасибо!
    это вопрос по самым основам, не поленись, прочитай чуток больше чем intro.
    Спустя 56 сек.
    ну и как уже подметил наш ахуенный дуд, читай про автолоад.
  • master

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

    Spritz 31 октября 2011 г. 20:33, спустя 20 часов 42 минуты 37 секунд

    Хорошо, как правильно "инициализировать" все эти классы в одном? В конструкторе? Чтобы потом в общем классе обращаться к $this->smarty->… , $this->mail->… , $this->users->…


    в контроллере, бывает, нужно обратиться к модели:

    class Controller {
    function __get($name){
    $t = substr($name, 0, 1);
    if ($t >= 'A' and $t <= 'Z'){ // хаваем только $name с большой буквы
    return $this->$name = new $name;
    } else {
    trigger_error('Required undefined model field: '.$name, E_USER_NOTICE);
    }
    }
    }


    class BlogController extends Controller {
     function index(){
       $records = $this->BlogModel->last(10); // обращаемся к магическому методу __get
       return compact('records'); // передаём в шаблонизатор
     }
    }
    не всё полезно, что в swap полезло

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