PHP.SU

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

Страниц (400): В начало « ... 391 392 393 394 [395] 396 397 398 399 ... » В конец

> Найдено сообщений: 5994
caballero Отправлено: 21 Сентября, 2011 - 15:04:23 • Тема: Вопрос к матерым об общей идее конструкторов • Форум: Объектно-ориентированное программирование

Ответов: 46
Просмотров: 9157
Цитата:
если у вас одна ошибка(неверная комбинация логина и пароля), то и catch будет один.

во первых не один - у вас могут быть иклблючения по работе с БД

во вторых что проще и читабельнее

if(_)

или


try{


...



}
catch{

}


Цитата:
А получение экземпляра класса User и его проверка в коде на принадлежность к этому классу вызывают недоумение.


вы проверяете не принадлежность а что это класс (можно использовать is_class) а не строка

или можно наоборот проверять что строка -
здесь два варианта и простой if
caballero Отправлено: 21 Сентября, 2011 - 14:42:26 • Тема: Вопрос к матерым об общей идее конструкторов • Форум: Объектно-ориентированное программирование

Ответов: 46
Просмотров: 9157
Цитата:
а потом парсить строку на содержание что бы понять, что с ней делать


Зачем парсить? Вы знаете что это ошибка при чем ошибка наперед известная (неверныая комбинация логина или пароля) вот и выводите

а пятиэтаэный
catch(...)
catch(...)
catch(...)
catch(...)
catch(...)

в каждой функции чем лучше

я уже не говорю как такую бизнес логику отлаживать
caballero Отправлено: 21 Сентября, 2011 - 14:27:32 • Тема: Вопрос к матерым об общей идее конструкторов • Форум: Объектно-ориентированное программирование

Ответов: 46
Просмотров: 9157
Цитата:
сли Вы желаете писать в хорошем стиле, этого следует избегать. В таком случае Вы всегда будете знать что ожидать от того или иного метода класса.

я и так знаю что от него ожидать это программа а не лотерея.

Цитата:
Возвращать непонятно что - плохо, лучше всегда использовать возможность вызвать исключение.


Не непонятно что а вполне определенные изветсные наперед значения
либо клас User проверяем instance of
либо строку

использование исключений для бизнес логики - прямой путь к спагетти коду в частонсти целой этажерке проверок что за исключение
caballero Отправлено: 21 Сентября, 2011 - 14:00:42 • Тема: Вопрос к матерым об общей идее конструкторов • Форум: Объектно-ориентированное программирование

Ответов: 46
Просмотров: 9157
Цитата:
caballero, я с вами не согласен в последнем вопросе Ф-я должна иметь четкий api и если она возвращает объект класса user - то возвращать false в хз каких ситуациях - это истинный моветон. Этот false не дает понять, почему он вернулся - нет такого пользователя или пароль не подошел или база упала ... из за чего false ? Так что если возвращается объект - должен возвращаться либо он, либо null, никаких смешений типов не допускается, а все ситуации, когда user не может быть отдан - должны вызывать exception соответствующего типа.


Самое простое возвращать строку с описанием ошибки (null ничем не лучше false)
Смешение типов в PHP нормально - это нетипизированный язык
а вот исключения там где можно сделать нормальную обработку как раз не лучшее решенире


Цитата:
Чем статический метод предпочтительнее конструктора на большом количестве полей?



тем что вы берете данные и прямо присваиваете их членам класса

не нужно писать конструктор с десятком параметром а потом в конструкторе десяток переприсвоений этих параметров внутренним переменным
caballero Отправлено: 21 Сентября, 2011 - 13:31:50 • Тема: Как подключиться к удалённой базе данных • Форум: Работа с СУБД

Ответов: 5
Просмотров: 6635
так погугли что эта ошибка может означать

может версия клиента и сервера не стыкуются
caballero Отправлено: 21 Сентября, 2011 - 13:07:04 • Тема: Вопрос к матерым об общей идее конструкторов • Форум: Объектно-ориентированное программирование

Ответов: 46
Просмотров: 9157
Цитата:
я просто почему спрашивал... видел достаточно кода(на яве или шарпах), где проверка валидности данных проходила исключительно внутри класса объекта, и при некорректности просто бросалось исключение, в том числе при первичном заполнении пустого объекта.


Ну, всякj люди пишут. В принципе если выбрысывать исключение то можно - тогда сборщик мусора сам уберет недоделанный класс. Но такой подход тоже некорректен. исключения должны выбрасыватся в ИСКЛЮЧИТЕЛЬНЫХ ситуациях. Например - ошибка соединения с БД или еще чего. Проверка на валидность - это бизнес-логика. Выбрасывать исключение потому что неверный логин - моветон.


PHP:
скопировать код в буфер обмена
  1. class user {
  2.  
  3.    static function login($username,$pass) {
  4.         //лезем  в  БД
  5.           if(нашли юзера){
  6.               return new user($username); //возвращаем экземпляр
  7.           }
  8.              else return false; //ругаемся
  9.          
  10.  
  11.    function __conctruct($user) {
  12.         $this->login = $user;
  13.         ....
  14.    }


вообще то статический метод может напрямую присваивать значения полям
иногда это удобнее когда десяток полей както с конструктором громоздко получатся
caballero Отправлено: 21 Сентября, 2011 - 11:01:29 • Тема: AJAX Events Calendar • Форум: JavaScript & VBScript

Ответов: 10
Просмотров: 4778
тебе приходит AJAX запрос

Это обычное обращение к файлу PHP по URL который ты прописываешь в елементе который запрашивает данные аяксом

получил файл сходил в базу выгреб данные отдал массив закодировный json( как в примере) обычным echo. структура массива - в описании календаря - он же должен получать данные в попределеном виде

судя по всему ты не очень не понимаешь как ajax работает - начни изучение доков и примеров - этого добра полный интернет
caballero Отправлено: 21 Сентября, 2011 - 10:55:02 • Тема: Что же такое валидный код? • Форум: HTML, Дизайн & CSS

Ответов: 21
Просмотров: 11187
На самом деле браузеры не производят валидацию на основе DOCTYPE. Они по этой строке просто ориентируются как отрисовывать в неоднозначных ситуациях.
Самое оптимальное либо не ставить там ничего либо просто писать <!DOCTYPE html>
А сайты нужно просто тщательно тестировать - другого варианта нет.
caballero Отправлено: 21 Сентября, 2011 - 10:43:21 • Тема: AJAX Events Calendar • Форум: JavaScript & VBScript

Ответов: 10
Просмотров: 4778
это пример кода который о отправляет данные в календарь
и то что array запросто может братся из базы.
Запрос идет по AJAX - значит календарей может быть несколько каждый будет спрашивать отдельно - нужно только в URL запроса подставлять какой нибудь номер чтобы понимать какой календарь просил данные
caballero Отправлено: 21 Сентября, 2011 - 10:38:56 • Тема: Вопрос к матерым об общей идее конструкторов • Форум: Объектно-ориентированное программирование

Ответов: 46
Просмотров: 9157
Проверять валидность в конструкторе - абсурд. Ты создаешь екземпляр класса
разумеется уж валидного. Если ты проверяешь в конструкторе ты УЖЕ создал экземпляр. А если он не валидный и что - прибивать его?
Вообще в конструкторе не принято выполнять действия которые могут вызывть ошибку или исключение (ходить в базу например) - задача конструктора - проинициализировать члены класса.

Плодить иерархию валидаторов - это значит писать "индусский" код и противоречить принципу инкапсуляции.

Самое грамотное - создать в классе СТАТИЧЕСКИЙ метод который будет валидировать данные и возвращать екземпляр класса или там null или false или исключение выбрасывать. Тем более что статический метод будет иметь доступ к приватным членам класса. Да и не нужны в большинстве случаев специфические валидаторы.
В случае с юзером - статический метод login(name,pass)
либо возвращает екземпляр юзера после проверки в БД, либо например строку с описанием ошибки.
caballero Отправлено: 21 Сентября, 2011 - 02:08:09 • Тема: Обработка больших файлов • Форум: Если скрипт не работает

Ответов: 11
Просмотров: 6059
Цитата:
Можно ли как-то сделать так, чтобы скрипт прерывался, а потом дальше выполнялся?


Нельзя стандартными средствами

Прелдполагаю что вы парсите какмито громоздкими методами

попробуйте файл лога сначала прогнать через какой нибудь быстрый фильтр
например повыкидывать строки явно не интересные и записать остальное во временный файл
уверен его размер будет гораздо меьше
а потом парсить его уже детально

вот и будет типа поэтапная обраьотка
caballero Отправлено: 21 Сентября, 2011 - 01:38:32 • Тема: как получить значения • Форум: JavaScript & VBScript

Ответов: 11
Просмотров: 2367
Цитата:
Соц Сеть,те надо смайлики просталять в тексте сообщения?


если есть прога которая потом текстовые смайлики заменит на иконки с ФАЙЛА то да. Вот как на форуме здесь. Вставляете значки а когда выводите там уже рожица - прога на сервере обюработала и подставила ссылку на файл.

http://forum.php.su/im/emoticons/dry.gif например
caballero Отправлено: 21 Сентября, 2011 - 01:35:04 • Тема: Блокировка данных в InnoDB • Форум: SQL и Архитектура БД

Ответов: 7
Просмотров: 54
значит phpadmin показывает дефолтное значение
я думаю можно запросить соответствующую переменную и вывести данные именно касающееся твоей сесии, в смысле твоего коннекта.
если таки будет off тогда надо гуглить
наверняка ктото натыкался на похожую траблу
на хабре помню что то такое обсуждалось
caballero Отправлено: 21 Сентября, 2011 - 00:39:22 • Тема: Блокировка данных в InnoDB • Форум: SQL и Архитектура БД

Ответов: 7
Просмотров: 54
так зачем пишешь такие мудреные запросы если новичек
Где вырубать не помню - спроси у гугла
либо настройка в my.cnf либо запрос специальный либо то и другое

кстати
уверен что правильный синткасис?
mysql_query("SET AUTOCOMMIT=0");

может типа
mysql_query("SET AUTOCOMMIT OFF");
caballero Отправлено: 21 Сентября, 2011 - 00:36:48 • Тема: Практическое применение ООП • Форум: Объектно-ориентированное программирование

Ответов: 19
Просмотров: 6352
Цитата:
принципы ООП ты можешь свободно расширять движки Drupal, 1c-bitrix... в общем что душе угодно.


Это ты сможешь делать если будешь знать эти движки после нескольких недель а то и месяцев ковыряния в коде и документации. Знание ООП тут поможет не больше чем знание синтаксиса и функций PHP.

Цитата:
Берёшь список и описание заложенных в системе методов и применяешь их где тебе надо


Ага. Особенно в Друпале и битриксе.

Страниц (400): В начало « ... 391 392 393 394 [395] 396 397 398 399 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB