А с обычной переменной объявленной в функции без слова static после вызова функции, функция возвратила свое значение, и значения всех переменных при следующем вызове обнуляются?
, то при $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; переменная удаляется! } не происходит. Поэтому при статике она просто плюсует прошлую переменную и выводит её
Почему со словом static в результате получается 12345, а без этого слова 11111?
потому что static сохраняется при выходе из функции а автоматическая переменная - нет.
Поэтому когда ты в цикле вызываешь 5 раз функцию она создаёт переменную 11111 заново. Если хочешь обойтись без статической переменной, - объяви перменную вне функции.
наглядно покажет разницу. Код выше для unset сообщит Notice о необъявленной переменной, тогда как в случае установки null его не будет; в обоих случаях покажется NULL как результат.
С точки зрения процессорного времени - это экономия на булавках.
Всё, спасибо большое! А с точки зрения памяти это не экономия на булавках?
navitesting
Что значит "затратно"? В случае unset уничтожается и ссылка. По размеру она - несколько байт.
Ну то есть $var = null, очень грубо, говоря ест меньше процессорного времени(не удаляет ссылку),а unset освобождает память(удаляя при этом ещё и ссылку).
Нет, не идентично.
Память в php организуется так, что переменная - это по сути два параметра - ссылка на переменную и ее значение (при этом ссылка на переменную не является адресом в физической памяти или чем-то подобным, это просто указатель в таблице имен)
В случае unset разрушается и значение переменной, и ссылка на нее. В случае присваивания null разрушается только значение переменной. В этом и состоит отличие этих двух конструкций.
спасибо большое! Значит присваивание переменной null менее затратно? - и значит, что, unset() оправдан только в случае работы с огромными массивами?
Я в 13 лет написал папе 3D лайнс на си(+глют). Так что, ранние начинания, ровным счётом ничего не значат. Кстати - 23 - дурак дураком .
Единственное, помню, мне на одном форуме, когда я спросил про конвертацию int в char*, и обратно, сказали "RTFM!!!" - как щас помню. Интернет тогда у меня был еще диалаповский, книжек на русском не было - пришлось писать самостоятельно 2 функции(английский тогда не очень хорошо знал - поэтому RTFM'ать не получилось).
Я в том плане, что, можно долго придираться к словам "а что ты подразумеваешь под "профессиональной структурой сайта" - но все же поняли что он имеет ввиду? Никто же тут не дебил? Правд, помогите пацану - сам бы помог но в веб-программировании новичок.
5) $this->table_name - это текущая таблица - соответствующая названию класса. В классе Model от которого наследуется класс GalTales реализован небольшой метод который возвращает название наследуемого класса.