Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Обьясните код

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: код в ядре движка code igniter
dj_vadim
Отправлено: 04 Августа, 2011 - 14:29:17
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




что значит следующий код
PHP:
скопировать код в буфер обмена
  1. $BM =& load_class('Benchmark', 'core');
  2. $BM->mark('total_execution_time_start');
  3. $BM->mark('loading_time:_base_classes_start');

копаюсь в ядре движка code igniter 2.0.2 Подмигивание
 
 Top
OrmaJever Модератор
Отправлено: 04 Августа, 2011 - 14:36:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




функция load_class() возвращает ссылку на обьект которая записывается в $BM затем вызывается метод mark() обьекта $BM


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Arni
Отправлено: 04 Августа, 2011 - 14:44:12
Post Id



Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Июль 2011  


Помог: 2 раз(а)




OrmaJever, а где это может реально пригодиться в практике, есть пример кокой?
 
 Top
OrmaJever Модератор
Отправлено: 04 Августа, 2011 - 14:46:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




чего пример?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Arni
Отправлено: 04 Августа, 2011 - 15:00:27
Post Id



Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Июль 2011  


Помог: 2 раз(а)




Зачем это нужно если



Не создает новый объект (не учитывая того что это не совсем так в более ранних версиях php). Либо я вообще не понял правильно что тут.
 
 Top
OrmaJever Модератор
Отправлено: 04 Августа, 2011 - 15:05:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




$obj1 и $obj2 это 2 разных обьекта одного класса, тоесть если именить обьект 1 то на 2 это никак не повлияет, ну и конешно память занята двумя обьектами. А если зделать сылку
$obj1 = &$obj2
то память будет занята только под один обьект а $obj1 это просто сылка на $obj2. Это выгодно в многих случаях но пока не могу дать конкретный пример.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Arni
Отправлено: 04 Августа, 2011 - 15:16:27
Post Id



Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Июль 2011  


Помог: 2 раз(а)




OrmaJever пишет:
$obj1 и $obj2 это 2 разных обьекта одного класса, тоесть если именить обьект 1 то на 2 это никак не повлияет, ну и конешно память занята двумя обьектами. А если зделать сылку


Это в старых версиях. В новых чтобы продублировать объект нужно



Иначе это один и тот же объект как и в java

(Отредактировано автором: 04 Августа, 2011 - 15:19:36)

 
 Top
dj_vadim
Отправлено: 05 Августа, 2011 - 22:45:52
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




OrmaJever пишет:
функция load_class() возвращает ссылку на обьект которая записывается в $BM затем вызывается метод mark() обьекта $BM

если чесно, я так и не понял сути ...
 
 Top
Arni
Отправлено: 05 Августа, 2011 - 22:56:06
Post Id



Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Июль 2011  


Помог: 2 раз(а)




dj_vadim пишет:
если чесно, я так и не понял сути ...


Переменную можно хранить в памяти, она там занимает определенное количество байт (кБ, мБ). Но иногда нам может понадобиться синоним переменной, например для того чтобы их загнать в массив, а с массивами как известно проще работать в циклах. Мы можем создать массив переменных, тем самым продублировав переменную физически. А это приводит к утечке памяти. Это может не устроить педантов в программировании, а может не вписаться в ресурсы. Любой из вариантов возможен. Поэтому мы создаем не массив переменные, а массив указателей на переменную в памяти. Таким образом, получаем свой массив, крутим его в циклах. Таким образом получается что и память цела и задача выполнена.

Возможно мой пример не очень вписывается под этот конкретно случай, но в целом чтобы вам было более доступно.

(Отредактировано автором: 05 Августа, 2011 - 22:58:34)

 
 Top
LIME
Отправлено: 05 Августа, 2011 - 23:13:40
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




dj_vadim надо учитывать для какой версии пхп этот код
код делает синоним для обьекта в 4.х пхп
а в 5.х достаточно присвоить переменной другую
кстати вопрос
а этот код в 5 пхп будет правильно работать? может он просто универсален для всех версий?
 
 Top
Arni
Отправлено: 05 Августа, 2011 - 23:46:21
Post Id



Гость


Покинул форум
Сообщений всего: 95
Дата рег-ции: Июль 2011  


Помог: 2 раз(а)




LIME пишет:
dj_vadim надо учитывать для какой версии пхп этот код
код делает синоним для обьекта в 4.х пхп
а в 5.х достаточно присвоить переменной другую
кстати вопрос
а этот код в 5 пхп будет правильно работать? может он просто универсален для всех версий?


Как я и говорил выше Улыбка

Он универсален для всех версий. Многие программисты попались на этот прикол в старых версиях пхп.

(Отредактировано автором: 05 Августа, 2011 - 23:47:09)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB