All streams
Search
Write a publication
Pull to refresh
35
0

User

Send message
Еще одна бага:
При вводе пасворда, любой длинны (больше шести символов) в форме восстановления пароля (когда просят ввести два раза новый), то форма отвечает мне, что надо бы не жадничать и ввести пароль более шести символов.

Мучался долго, и ближе к вечеру все таки вспомнил старый. Спасибо вам…
а можно привести пример параметров для mail(), когда он неконтролируемо бросит warning, который ничо вообщем-то и не значит?
Поздравляю, более ужасного когда я еще
сегодня не видел
Я думаю вероятность встретить гавношаблонный код дергающий пхп функции из xslt-шаблона, увеличится в разы, когда большая часть людей узнает, что вообщем-то можно дергать пхп функции из xslt...
делается такой эффект очень просто:
class Foo {
  function bar() {
    return $this;
  }
}
$foo = new Foo();
$foo->bar()->bar()->bar();
А после этого чудного флешбека придет понимание, что смысла дергать каждый раз базу данных - вообщем-то и нету, многое можно просто закэшировать.

А менять удобство и скорость разработки на написание десятка тыщ строк кода, который сложен в поддержке... думаю прикупить еще один сервер - будет самым разумным решением.
Это не мега круто. Просто это действительно удобно, правильно и имеет очень много плюсов (и примерно столько же минусов, ведь ничего соверешнного нету) по сравнению с процедурным стилем.

Попробуйте в процедурном стиле поработать с десятками связанных сущностей, которые разбросанны по нескольким источникам данных. Думаю что через три часа мучений вы первый побежите набрасывать два слоя абстракций модели данных и еще орм сверху.
Действительно??? Нет, вы правда в этом уверенны? Просто... я наверное хочу признатся, что у меня, к великому моему сожалению, вышел неправильный ActiveRerod, давайте я вам приведу небольшой пример, что бы вы сами поняли
$user = new User();
$user['username'] = 'root';
$user['password'] = 'qwerty';
$user->usergroup['name'] = 'admins group!';
var_dump($user['usergroup'], $user->usergroup);

$user->save();
на что собственна в бд получим:
user(id, username, password, usergroup, email):
1231, root, md5(qwerty), 91231, root@thishost.com

а в Usergroup(id, name):
91231, admins group!

в браузере увидим что-то вроде
int 123

object(Usergroup)[2]
protected 'properties' => array(...)


Эх, придется все переписывать... а было так удобно...
А ваш код, наверное, образец, с которого нужно писать стандарты кодирования ;)
Очень, очень хочется посмотреть на то, как второй кусок кода будет вписан в mvc(в народе: разделим наше приложение на шаблонизатор, самописный класс\функции для работой с бд, и будем их дергать в контроллере, кидая в шаблонизатор).

Почему же не вижу, вижу, в первом кусе я забыл убрать $users = array(), а во втором foreach появился ;)

И действительно, эта статья очень поможет начинающим программистам, дав понять, как не стоит писать, даже если "очень очень" хочется.
А можно поинтересоватся, где тут облегчение мне жизни? То, что я теперь буду работать с голыми данными из базы, но используя другую функцию, если раньше мы писали так
$result = mysql_query("SELECT * FROM users");
$users = array();
while ( $row=mysql_fetch_array($result) ) {
  // много кода, в котором мы что-то делаем с row, к примеру
}
то сейчас мы будем писать так что-ли:
foreach(sql_get_rows("SELECT * FROM users") as $row) {
  // абсолютно тот же код.
}

Люди, наверное не зря придумали такие вещи как Абстракция бд, модель данных, activerecord, datamapper.

Когда же вы научитесь учится сами, прежде чем учить чему-то других...
Только не геймера ;) Но правда для них тоже есть много приятных и интересных решений...
Не, это ворнинг. Что наводит на мысль, что ворнинг в пхп это нечто большее чем просто ворнинг...
потому что я тогда не буду писать сам три строчки в виде
if(!$connection) {
  throw new ModelConnectionException('я нисмог приконектицо к базеданых')
}

А эксепнш будет кинут по варнингу.
Насчет первого момента, Fatal Error-ы в пыхе не перехватываются. Нет, конечно перехватить их можно, но... это делается через такую жопу, что это никому и ненужно.

Насчет варнингов в пхп все очень тонко. К примеру по варнингу от mysql_connect, можно выкидывать эксепшн - потому, как варнинг нам сообщит о том, что мы не смогли приконнектица к бд, в том же foreach-е если он будет выкидываца - тоже будет хорошо, потому как сразу заставит посмотреть почему же у нас иногда не те данные имеюца (и такое поведение имхо хорошо и для варнингов с киданием заголовков и кук)... но вот в случае с DOMDocument::loadHTML - такое поведение будет неочень хорошо, потому как он же html нормально распарсит, но кинет варинг, а использовать @ или пустой catch - не очень красиво.
Ксате интересный пример использования исключений, правда я все таки считаю что не для такого они предназначены (все таки неправильно введеные данные пользователем - это нормальная ситуация), и в реальной жизни применять их в этой ситуации не стоит... Но я бы еще добавил Countable, и строчку if((bool)$e->current()) { заменил бы на if(count($e)) {
Samsung 245T. Теперь я могу сказать, что работать за обычным 4х3, да и еще какой-нибудь 19-шкой - это извращение.
Можно начать с того, что все таки в данном случае мы проверяем есть ли у нас такая переменная, или нет. isset логически подходит сюда гораздо больше.

И продолжить тем, что обращатся напрямую к посту, в нормальном приложении - дурной тон, как уже было сказанно выше (с приведенными примерами), лучше написать функцию\класс для работы с енвиронментом. Вопервых, мы избавим себя от рутинного кода в будущем, во вторым - сократим количество потенциальных дыр и улучшим читабельность.

В треитьих, посудите сами как будет выглядить такой код, если нам нужно будет вытащить несколько переменных из поста\гета?
Вам назвать все проблемы данного кода?
Приведите пожалуйста пример короткого элегантного кода с использованием собаки. Просто я, к сожелению не могу себе представить такой ситуации.

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity