-
Posts
60 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Store
Everything posted by Mot
-
Glebr что вам конкретно нужно? Разобраться "как PHP работает с MySQL", или же - "как правильно составлять запросы и работать с СУБД"?
-
Ну так посоветуйте человеку самоучитель, который писал грамотный автор Во многих самоучителях есть раздел "Работа с СУБД". За более подробной информацией - тутачки .
-
Ну так исключения это не перехват ошибок я б переписал ваш код примерно следующим образом try { if (@sqlite_query($this->db,$string)) throw new Exception('Ошибка выполнения SQL-запроса'.($this->debug?': '.sqlite_error_string(sqlite_last_error($this->db)):'')); } catch (Exception $ex) { $this->err=$ex->getMessage(); // или вот так $this->err = "При подключении к базе данных возникла ошибка.<br />\nФайл:{$ex->getFile()}<br />\nСтрока:{$ex->getLine()}<br />\nНомер:{$ex->getCode()}<br />\nСообщение:{$ex->getMessage()}<br />\n"; } catch это обработчик но не функция, значение он не возвращает.
-
2s0rr0w Можешь привести пример веб-приложения для корпоративного уровня? По теме: MySQL на даный момент самая распространенная БД, хостигнов с PHP без БД не много, с PostgreSQL меньше чем с MySQL. Да и в принципе MySQL - реляционная БД, в то время как PostgreSQL - объектно-реляционная БД(Oracl'a тоже). MySQL является решением для малых и средних приложений.
-
Для отладки, в некоторых случаях, имеет смысл использоваться такой конструкцией: function exception_handler($exception) { echo "Exception: ".$exception->getMessage()."\n"; } set_exception_handler('exception_handler'); throw new Exception('Some exception'); echo "Not Executed\n";
-
false, 0, '', NULL - все ети значения при проверке выдают false. В ПХП механизм исключений не полностью реализирован. Обработка исключений - вот все прекрасно расписано, особенно блок "Достоинства и недостатки". Я иногда их использую в качестве "Использование исключений в целях контроля ошибок повышает читаемость кода, так как позволяет отделить обработку ошибок от самого алгоритма".
-
Руский в школе не учил, страна не та Не нравится как я пишу, будьте добры поправте.
-
Инкапсуля́ция — свойство объединить и защитить данные и код в объект и скрыть реализацию объекта от пользователя. При этом пользователю предоставляется только спецификация (интерфейс) объекта. В итоге с помощью public, private, protected реализируется инкапсуляция в ПХП. Это значит что пользователь может работать только с теми методами, которые для этого предназначены. Пользователь не может из внешней программы влиять объект, только через интерфейс. Реализутеся с помощью использования закрытых данных и методов. Вполне можно обходиться и публичными методами, но ето иногда вводит в заблуждение тех кто потом использует написанный вами код. Для решения тривиальных задач публичные методы подходят. (Пример: класс для стандартной реализации работи с MySQL) Если расширить задачу то: Можно написать методы для реализации INSERTa SELECTa UPDATE итд. и отдельный метод myQuery который обьявить private. Дальше в теле INSERTa SELECTa UPDATE итд. формируется SQL-запрос и вызываеться внутрикласовый метод myQuery который производит сам запрос. Таким образом можем ограничить список SQL запросов для пользователя. Static предназначено для статических данных и методов. Если свойство обьявлено как статическое, то его значение для всех объектов данного класса одинаково. То же и для методов. С помощью этого метода можно создавать подобие библиотек функций. Если все методы в классе объявить как статические то грубо говоря у нас будет только 1 объект - сам класс Доступ к свойствам класса: SomeClass::$someVariable; Доступ к методам класса: SomeClass::SomeMethod(); Protected более лоялен. Если вы хотите взять определенный класс за базовый, то те методы которые в нем объявлены как Private не будут доступны. Private - переменная\метод доступны только внутри данного! класса. Protected - ведет себя как и private, но свойство \метод объявленный как protected может быть доступен из класса потомка.
-
Этот пост не раскрывает все понятия ООП в ПХП и в общем, он только для ознакомления =) Немного про ооп =) ООП базируется на понятии класса. // объявление класса class clsName { // тело класса // объявление переменных класа (переменные класса это свойства класса) $name = "some value"; // объявление свойства var $name2 = ="some name v2"; // объявление свойства в стиле php4(не советую использовать, но знать нужно) // объявление функции класса (функции класса ето методы класса) function fName() { // команды } } После того как описали свойства и методы класса нужно создать обьект ето класса Имея 1 клас мы можем создать столько экземпляров сколько хотим(но нужно ли ). Для каждого обьекта можно задать уникальные значения свойств, а так же вызывать методы с различными параметрами. $obj = new clsName(); Доступ к свойству: $obj->name; // возвращает значение $name Доступ к методу: $obj->fName(); // возвращает значение метода fName(); внутри класса могут использоваться такие константы: __METHOD__ - имя метода в котором используется константа __CLASS__ - имя класса Так же внутри класса испотльзуется ключевое слово this, которое ссылается на данный класс. Существует 4 варианта объявления области видимости свойств\методов: public - переменная\метод доступны из вне класса private - переменная\метод доступны только внутри данного! класса protected - переменная\метод доступны внутри даного класса и классах наследниках. (Именно этими свойствами и реализируется инкапсуляция в ПХП) -static - ключевое слово которое определяет метод\свойство которое будет одинаковым(неизменным) для всех экземпляров данного класса class Test // определение класса { static $sTest = "Static value!<br />"; public $pTest = "Public value!<br />"; private $prTest = "Private value!<br />"; } $obj = new Test; // создание объекта echo $obj->sTest; // ничего не выведет echo $obj->pTest; // выведет "Public value!" echo $obj->prTest; // выдаст ошибку echo $obj->myTest(); // выведет корректно, хоть такой вызов и работает, но он рассматривается как некорректный echo Test::$sTest; // вывод статического свойства echo Test::myTest(); // вывод статического метода Коструктор и деструктор. __construct() - функция которая визивается при создании объекта __destruct() - функция которая вызивается при удалении объекта длявызова конструктора родительского класса из класса наследника используеться конструкция parent::__construct() Наследование в ПХП реализируеться механизмом расширения классов. class A { // описание родительского класса } class B extends A { // описание расширяемого класса(потомок) } В расширяемом класс можно переопределять методы\свойства базового класса. Переопределение методов\свойств происходит следующим образом: в классе наследнике определяется метод\свойство с таким же именем как и в базовом классе. Ето называется перегрузкой методов\свойств. НО! Существует ключевое слово final которое запрещает переопределение. Если применить final перед определением класса, то драный класс будет являться конечным и больше сможет быть использованным в роли базового класа для расширения других классов. final class A { // описание класса } В ПХП так же реализирован полиморфизм. Он достигается с помощью создания абстрактных классов. Суть абстрактных классов ето определение абстрактных методов. Абстрактный метод - ето виртуальный метод который не может вызываться непосредственно, без переопределения. Класс который содержит хоть 1 абстрактный метод - абстрактный класс. abstract - ключевое слово которое объявляет класс как абстрактный. abstract class AbstractClass { // абстрактные методы abstract protected function getValue(); abstract protected function prefixValue($prefix); // обычный метод public function printOut() { print $this->getValue() . "\n"; } } class StandartClass extends AbstractClass { protected function getValue() { return "ConcreteClass1"; } public function prefixValue($prefix) { return "{$prefix} StandartClass"; } } Интерфейс - это абстрактный класс содержащий лишь абстрактные методы и не определяя тела методов. // Определения интерфейса interface iTest { public function hello(); public function goodbay(); } Подключение интерфейса определяется ключевым словом implements class Test implements iTest { public function hello() { echo "hello =)"; } public function goodbay() { echo "goodbay =("; } } Есть еще "Магические методы" http://ua2.php.net/manual/en/language.oop5.magic.php Если будут желающие я их опишу =) Ну вот так вот в двух словах =))) ЗЫ: Не судите строго . Жду конструктивную критику
-
Работа с файлами происходит медленней чем выборка из БД. 2s0rr0w не на всех хостингах есть Оракл