[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: __autoload Заезжаная тема но все же
m4a1fox
Господа, не могу понять принцип __autoload, вот код начало index файла

<?php session_start();
$date = date("Y-m-d");

include_once './variables.php';
include_once './config.php';
include_once './libs/function.php';
include_once './libs/default.php';

function __autoload($classname){
include("class/class.".$classname.".php");
}
$db = new connectDb;
$autorization = new autorizationAdmin($_POST['name'], $_POST['pass']);
$user = new showLogin;
$today = new today;
$ex = new experement($_POST);
$upload = new downloadImage;
$addpage = new addPageToDb($_POST['title'], $_POST['text'], $_GET['id']);
$add = new addAdmin($_POST['name'], $_POST['pass']);


Собственно, не легче делать вот так

include './class/class.connectDb.php';
include './class/class.autorizationAdmin.php';
include './class/class.showLogin.php';
include './class/class.addAdmin.php';
include './class/class.today.php';
include './class/class.downloadImage.php';
include './class/class.addPageToDb.php';
include './class/class.experement.php';


А классы объявлять в самих файла? Очень интересует как правильно делать?



Спустя 8 минут, 46 секунд (25.07.2011 - 13:43) Nikitian написал(а):
Не проще.
В файлах лишь описание класса, а заздаёте объект этого класса там, где надо, подключая только те файлы, которые нужны. Написали новый класс - нет необходимости его в index.php прописывать, тем более, если он нужен только в одном месте

Спустя 1 минута, 22 секунды (25.07.2011 - 13:44) m4a1fox написал(а):
Понял! Тогда объявление всех классов происходит в индексе? Я просто уточняю!

Спустя 4 минуты, 25 секунд (25.07.2011 - 13:49) Invis1ble написал(а):
Автолоадер назначить надо, чтобы иметь PROFIT :)
Примерно так:
function autoload($classname) {
require 'class/class.' . $classname . '.php';
}
spl_autoload_register('autoload');

$db = new connectDb;

Спустя 38 секунд (25.07.2011 - 13:49) m4a1fox написал(а):
Nikitian
Ясно! Если честно то запутался - где его объявлять?

Спустя 1 минута, 13 секунд (25.07.2011 - 13:51) Invis1ble написал(а):
Смысл в том, насколько я знаю, что файлы будут инклудится только при надобности.

Спустя 1 минута, 16 секунд (25.07.2011 - 13:52) m4a1fox написал(а):
Invis1ble
Цитата
инклудится только при надобности.

С этим спорить не буду, вопрос в том, где объявлять класс как new?

Спустя 1 минута, 26 секунд (25.07.2011 - 13:53) Invis1ble написал(а):
m4a1fox
Цитата
где объявлять класс как new?

не класс объявлять, а создавать объект. Где надо, там и создаешь smile.gif

Спустя 2 минуты, 25 секунд (25.07.2011 - 13:56) m4a1fox написал(а):
Invis1ble
Цитата

не класс объявлять, а создавать объект

Ну да..... вы меня поняли smile.gif
Цитата
Где надо, там и создаешь

Допустим, а если несколько файлов используют один и тот же класс.... это получается, что надо во всех создавать объект класса?

Спустя 6 минут, 11 секунд (25.07.2011 - 14:02) Invis1ble написал(а):
m4a1fox
Цитата
а если несколько файлов используют один и тот же класс.

может, несколько скриптов? если эти скрипты запускаются поотдельности - то естественно, несколько объектов. Хотя, можно и в сессии хранить, наверное, но это извращение имхо. А вообще, зависит от кокретной ситуации.

Спустя 3 минуты, 20 секунд (25.07.2011 - 14:05) m4a1fox написал(а):
тогда можно ли создавать объекты всех классов просто по порядку в index файле?

Спустя 2 минуты, 49 секунд (25.07.2011 - 14:08) Invis1ble написал(а):
m4a1fox
а почему бы и нет? только зачем, я не могу понять? создавай там, где объект действительно нужен, чтоб он не висел в памяти все время работы скрипта.

Спустя 6 минут, 9 секунд (25.07.2011 - 14:14) m4a1fox написал(а):
Invis1ble
Цитата
а почему бы и нет?

Окей! Так и сделаю!

Спустя 3 минуты, 14 секунд (25.07.2011 - 14:17) Invis1ble написал(а):
m4a1fox
Цитата
Окей! Так и сделаю!

странный ты, однако.... Я же говорю, что не стоит этого делать, т.к. таким образом ты увеличиваешь нагрузку на сервер занимая лишнюю память незадействованными объектами (которые кстати весят немало, по сравнению с простыми типами данных аля строка или число или даже те же массивы). Впрочем, делай как хочешь, это всего лишь совет.

Спустя 2 минуты, 13 секунд (25.07.2011 - 14:20) ADiel написал(а):
Пора почитать про MVC. http://habrahabr.ru/blogs/php/31270/

Спустя 1 минута, 36 секунд (25.07.2011 - 14:21) Invis1ble написал(а):
ADiel
причем здесь MVC ?

Спустя 7 минут, 42 секунды (25.07.2011 - 14:29) m4a1fox написал(а):
Да, мне тоже интересно..... MVC конечно весчь! Наверно имеется ввиду, что следует где-то в этой структуре необходимо обявлять класс....

Спустя 10 минут, 57 секунд (25.07.2011 - 14:40) ADiel написал(а):
Да при том, что m4a1fox не знает, как использовать ооп, потому что нет структуры. Он не знает, как между собой связать классы. MVC как раз для этого и предназначена. Не обязательно именно ее использовать, я имел в виду, что нужно понять как связывать классы в ооп и для чего они предназначены

Спустя 2 минуты, 34 секунды (25.07.2011 - 14:42) m4a1fox написал(а):
ADiel
Цитата
Он не знает, как между собой связать классы. MVC

Зря так думаете.... как раз то и знаю.... Уже делал mvc правда на процедурах а не на ООП! Так что в этом плане - вы правы!

Спустя 38 минут, 39 секунд (25.07.2011 - 15:21) VolDroN написал(а):
Вообщем. Что происходит без autoload:
ты пишешь классы, инлудишь всех их, из-за этого время генерации страницы падает, т.к. php надо пройтись по всем классам и скомпилировать их.

Что с autoload:
ты пишешь классы, в том файле где был инклуд классов, стираешь всё и пишешь autoload. всё.
Теперь если php увидит у тебя на любой странице (где подключён файл с autoload) создание объекта какого то класса, то он инклудит файл с его названием. Т.е. при
$new = new MyClass();

будет автоматически подключаться файл (если он ещё не был подключён), в зависимости от того что ты прописал в autoload, т.е. например: /class/class.MyClass.php
Что экономит время и ресурсы, т.к. классов обычно будет подключаться меньше чем если бы ты подключал на каждой странице их все.

Спустя 1 минута, 54 секунды (25.07.2011 - 15:23) ADiel написал(а):
Цитата
Уже делал mvc правда на процедурах а не на ООП!

А я говорю именно о ООП MVC

Спустя 17 минут, 12 секунд (25.07.2011 - 15:40) m4a1fox написал(а):
ADiel
Цитата
А я говорю именно о ООП MVC

Тогда 100% правы!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.