PHP.SU

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

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

> Найдено сообщений: 29
navitesting Отправлено: 02 Апреля, 2012 - 18:12:48 • Тема: Как правильно построить запрос • Форум: Вопросы новичков

Ответов: 32
Просмотров: 1027
PHP:
скопировать код в буфер обмена
  1. echo "<div><a href=\"http://site.ru/forum/$row[title_seo]/\">$row[title]</a></div>";
navitesting Отправлено: 31 Марта, 2012 - 18:18:12 • Тема: Статическая переменная • Форум: Вопросы новичков

Ответов: 3
Просмотров: 142
kilogram пишет:
А с обычной переменной объявленной в функции без слова static после вызова функции, функция возвратила свое значение, и значения всех переменных при следующем вызове обнуляются?


Смотри, если бы ты написал так:
PHP:
скопировать код в буфер обмена
  1. function selfcount() {
  2.  $count = 0;
  3.  $count++;
  4.  echo $count;
  5. }
  6. for($i=0; $i<5; $i++)
  7. selfcount();

, то при $i = 0,1,2,3,4; вызов selfcount();
1) создаст переменную $count = 0;
2) затем $count становится равной 1;
3) $count выведется
4) а после echo $count; переменная удаляется!
и так происходит при каждом вызове функции, если переменная не является статической.


Если она static, то действий
- 1) создаст переменную $count = 0;
- 4) а после echo $count; переменная удаляется! } не происходит. Поэтому при статике она просто плюсует прошлую переменную и выводит её
navitesting Отправлено: 31 Марта, 2012 - 17:44:18 • Тема: Статическая переменная • Форум: Вопросы новичков

Ответов: 3
Просмотров: 142
kilogram пишет:
PHP:
скопировать код в буфер обмена
  1. <html><body>
  2. <?PHP
  3. function selfcount() {
  4.  static $count = 0;
  5.  $count++;
  6.  echo $count;
  7. }
  8. for($i=0; $i<5; $i++)
  9. selfcount();
  10. ?>
  11. </body></html>


Почему со словом static в результате получается 12345, а без этого слова 11111?


потому что static сохраняется при выходе из функции а автоматическая переменная - нет.
Поэтому когда ты в цикле вызываешь 5 раз функцию она создаёт переменную 11111 заново. Если хочешь обойтись без статической переменной, - объяви перменную вне функции.
navitesting Отправлено: 31 Марта, 2012 - 17:21:19 • Тема: идентично ли • Форум: Вопросы новичков

Ответов: 8
Просмотров: 270
EuGen пишет:
navitesting
Разве что у Вас тысячи/миллионы переменных. В любом случае, существует garbage collector, который собирает мусор в автоматическом режиме.


То есть, впринципе, можно пользоваться $var = null - а garbage collector все ссылки при определённых обстоятельствах сам удалит?
navitesting Отправлено: 31 Марта, 2012 - 17:09:09 • Тема: идентично ли • Форум: Вопросы новичков

Ответов: 8
Просмотров: 270
EuGen пишет:
Пример:
PHP:
скопировать код в буфер обмена
  1. $var="test";
  2. unset($var);
  3. var_dump($var);
  4. $var="test";
  5. $var=null;
  6. var_dump($var);

наглядно покажет разницу. Код выше для unset сообщит Notice о необъявленной переменной, тогда как в случае установки null его не будет; в обоих случаях покажется NULL как результат.
С точки зрения процессорного времени - это экономия на булавках.


Всё, спасибо большое! А с точки зрения памяти это не экономия на булавках?
navitesting Отправлено: 31 Марта, 2012 - 17:03:48 • Тема: идентично ли • Форум: Вопросы новичков

Ответов: 8
Просмотров: 270
EuGen пишет:
navitesting
Что значит "затратно"? В случае unset уничтожается и ссылка. По размеру она - несколько байт.

Ну то есть $var = null, очень грубо, говоря ест меньше процессорного времени(не удаляет ссылку),а unset освобождает память(удаляя при этом ещё и ссылку).

А для разработчика можно как-то выяснить после:

была ли переменная удалена с помощью unset() или ей просто присвоили null.
Ну чтото вроде isset(&$var) ?
navitesting Отправлено: 31 Марта, 2012 - 16:55:58 • Тема: идентично ли • Форум: Вопросы новичков

Ответов: 8
Просмотров: 270
EuGen пишет:
Нет, не идентично.
Память в php организуется так, что переменная - это по сути два параметра - ссылка на переменную и ее значение (при этом ссылка на переменную не является адресом в физической памяти или чем-то подобным, это просто указатель в таблице имен)
В случае unset разрушается и значение переменной, и ссылка на нее. В случае присваивания null разрушается только значение переменной. В этом и состоит отличие этих двух конструкций.


спасибо большое! Значит присваивание переменной null менее затратно? - и значит, что, unset() оправдан только в случае работы с огромными массивами?
navitesting Отправлено: 31 Марта, 2012 - 16:46:35 • Тема: идентично ли • Форум: Вопросы новичков

Ответов: 8
Просмотров: 270
Здравствуйте! Идентично ли:


и



? архитектурно-внутри PHP, и непосредственно для пользователя PHP(разработчика)

Спасибо.
navitesting Отправлено: 28 Марта, 2012 - 23:08:57 • Тема: Вопрос о константах • Форум: Хранение данных, их вывод и обработка

Ответов: 5
Просмотров: 1156
Нет, нельзя - можно только или другую константу, или литерал, или строку, или число
navitesting Отправлено: 28 Марта, 2012 - 23:02:31 • Тема: Вопрос о константах • Форум: Хранение данных, их вывод и обработка

Ответов: 5
Просмотров: 1156
armancho7777777> потому что $_SERVER['DOCUMENT_ROOT'] "создается" на этапе выполнения кода, кг это переменная
navitesting Отправлено: 28 Марта, 2012 - 20:15:55 • Тема: Профессиональная структура сайта • Форум: Объектно-ориентированное программирование

Ответов: 31
Просмотров: 5920

Я в 13 лет написал папе 3D лайнс на си(+глют). Так что, ранние начинания, ровным счётом ничего не значат. Кстати - 23 - дурак дураком Голливудская улыбка.

Единственное, помню, мне на одном форуме, когда я спросил про конвертацию int в char*, и обратно, сказали "RTFM!!!" - как щас помню. Интернет тогда у меня был еще диалаповский, книжек на русском не было - пришлось писать самостоятельно 2 функции(английский тогда не очень хорошо знал - поэтому RTFM'ать не получилось).

Я в том плане, что, можно долго придираться к словам "а что ты подразумеваешь под "профессиональной структурой сайта" - но все же поняли что он имеет ввиду? Никто же тут не дебил? Правд, помогите пацану - сам бы помог но в веб-программировании новичок.

Извините, воспоминания Улыбка
navitesting Отправлено: 19 Марта, 2012 - 16:56:00 • Тема: MVC • Форум: Объектно-ориентированное программирование

Ответов: 19
Просмотров: 3250
Всё - разобрался. Всем спасибо, - можно закрыть тему!
navitesting Отправлено: 19 Марта, 2012 - 15:41:51 • Тема: MVC • Форум: Объектно-ориентированное программирование

Ответов: 19
Просмотров: 3250
DelphinPRO пишет:
navitesting пишет:
а нахрена его наследовать от DB да с еще и от settings?


Мне показалось так удобнее. И кода меньше по инициализации. А как лучше - композицией все эти классы?


класс DB сделать синглтоном и вызывать там где нужно


А разве у меня не синглтон был?

$this->sql($query), грубо говоря, чтобы можно было сделать?
navitesting Отправлено: 19 Марта, 2012 - 12:12:27 • Тема: MVC • Форум: Объектно-ориентированное программирование

Ответов: 19
Просмотров: 3250
caballero пишет:
Цитата:
вот модель наследуемая от общего класса Model который в свою очередь от Db а та от Settings

а нахрена его наследовать от DB да с еще и от settings?


Мне показалось так удобнее. И кода меньше по инициализации. А как лучше - композицией все эти классы?
navitesting Отправлено: 19 Марта, 2012 - 11:48:00 • Тема: MVC • Форум: Объектно-ориентированное программирование

Ответов: 19
Просмотров: 3250
5) $this->table_name - это текущая таблица - соответствующая названию класса. В классе Model от которого наследуется класс GalTales реализован небольшой метод который возвращает название наследуемого класса.

по поводу первого пункта не понял

вот таблицы:

Страниц (2): [1] 2 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB