То-то я в ветке комментариев выше пытался убедить человека, что вместо использования псевдонеймспейсов надо разносить переменные по областям видимости :)
Понятно, по сути переменные от классов и не отличаются, глобальный класс или глобальная переменная, какая разница, считайте глобальную переменную классом с одним полем.
В Zend_View нет отдельного языка для шаблонов, чистый PHP.
По опыту скажу, что к префиксам $this-> в шаблонах привыкаешь за 1-2 часа, и в дальнейшем глаз их просто не замечает. То есть читаемость шаблонов остается на том же уровне.
Согласен, добиться полного разделения логики и представления почти нереально в практических задачах. Но без стремления сделать это обычно выходит плохой неподдерживаемый код.
Это все верно, но кроме одного случая — передачи переменных в HTML-представление.
Используйте класс-шаблонизатор наподобие Zend_View или Smarty или напишите свой аналог. Читаться шаблон будет замечательно.
Объединение классов и функций в неймспейс полезно для предотвращения конфликтов имен классов и функций.
Например ситуация: у вас есть приложение, в котором для некоей задачи вы хотите использовать набор классов стороннего разработчика.
Если в вашем приложении и в стороннем наборе классов если классы с одинаковыми именем, будет проблема с интеграцией.
Если же заранее обернуть все в неймспейсы, проблемы не будет.
Проблема такого решения в том, что оно применяется вместо нормального рефакторинга.
Пространства имен — хорошая и полезная вещь, и я не считаю их дурным тоном. Как правильно сказал ниже zerkms, они нужны для объединения классов и функций. Это правильное использование неймспейсов.
Предотвращение конфликтов имен переменных делается максимальным сужением их области видимости, то есть вынесением их из глобальной области видимости в функции и методы классов, и, соответственно, разбиением больших функций и методов на атомарные.
Необходимость использования такого подхода, когда программист боится, что в данной области видимости могут использоваться другие переменные с такими же именами, свидетельствует о крайне плохом качестве кода.
Посмотрите исходные коды проектов на хорошем современном фреймворке, например, Zend Framework или symfony, и вы поймете, о чем я говорю.
Ваше решение — костыль для кода отвратительного качества, и оно не сделает ужасный код красивым.
Нажать что-либо в данном контексте предполагает, что надо отпустить. Нажать кнопку, клавишу.
Если отпускать не надо, об этом упоминается отдельно («Нажмите клавишу Alt и, не отпуская ее, нажмите F4»).
Четыре домашних компьютера (жена, две сестренки, теща), Windows XP SP3, Vista SP1&2, включенный Windows Update и UAC, работа без прав администратора, IE не используется, пользователи-непрофессионалы в IT. Больше полугода: полет нормальный, ни одну заразу не пропустил.
По опыту скажу, что к префиксам
$this->
в шаблонах привыкаешь за 1-2 часа, и в дальнейшем глаз их просто не замечает. То есть читаемость шаблонов остается на том же уровне.Согласен, добиться полного разделения логики и представления почти нереально в практических задачах. Но без стремления сделать это обычно выходит плохой неподдерживаемый код.
По второму вопросу: если вы боитесь, что верстальщик будет бояться
$this->
, используйте smarty, и будет у вас{$order_id}
вместо
<?php echo $this->order_id; ?>
Хотя я бы боялся таких верстальщиков.
А основное назначение шаблонизатора — не хранение переменных шаблона в отдельной области видимости, а разделение логики и представления.
Объединение классов и функций в неймспейс полезно для предотвращения конфликтов имен классов и функций.
Например ситуация: у вас есть приложение, в котором для некоей задачи вы хотите использовать набор классов стороннего разработчика.
Если в вашем приложении и в стороннем наборе классов если классы с одинаковыми именем, будет проблема с интеграцией.
Если же заранее обернуть все в неймспейсы, проблемы не будет.
Пространства имен — хорошая и полезная вещь, и я не считаю их дурным тоном. Как правильно сказал ниже zerkms, они нужны для объединения классов и функций. Это правильное использование неймспейсов.
Предотвращение конфликтов имен переменных делается максимальным сужением их области видимости, то есть вынесением их из глобальной области видимости в функции и методы классов, и, соответственно, разбиением больших функций и методов на атомарные.
Посмотрите исходные коды проектов на хорошем современном фреймворке, например, Zend Framework или symfony, и вы поймете, о чем я говорю.
Ваше решение — костыль для кода отвратительного качества, и оно не сделает ужасный код красивым.
Если неизвестно, что с переменными может случиться по дороге, надо код переписывать.
Спорный шаг, однако. Я бы предпочел стабильную версию, пусть и более старую.
Если отпускать не надо, об этом упоминается отдельно («Нажмите клавишу Alt и, не отпуская ее, нажмите F4»).
Четыре домашних компьютера (жена, две сестренки, теща), Windows XP SP3, Vista SP1&2, включенный Windows Update и UAC, работа без прав администратора, IE не используется, пользователи-непрофессионалы в IT. Больше полугода: полет нормальный, ни одну заразу не пропустил.
Насколько я понимаю, если установить его равным 0, то ext3 превращается по сути в ext2, то есть становится нежурналируемой. Или нет?
А вот в чем на практике будет отличие пяти процентов от, скажем, одного? Кроме, естественно, высвободившегося свободного места.
Кстати, будет нелишним напомнить, что невозможен перенос начала раздела ext2/3.
Я использую ext3 по тем же причинам, что и TripleWay.