Jump to content

Mot

User
  • Posts

    60
  • Joined

  • Last visited

Everything posted by Mot

  1. Glebr что вам конкретно нужно? Разобраться "как PHP работает с MySQL", или же - "как правильно составлять запросы и работать с СУБД"?
  2. Ну так посоветуйте человеку самоучитель, который писал грамотный автор Во многих самоучителях есть раздел "Работа с СУБД". За более подробной информацией - тутачки .
  3. Ну так исключения это не перехват ошибок я б переписал ваш код примерно следующим образом 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 это обработчик но не функция, значение он не возвращает.
  4. Mot

    Базы данных

    2s0rr0w Можешь привести пример веб-приложения для корпоративного уровня? По теме: MySQL на даный момент самая распространенная БД, хостигнов с PHP без БД не много, с PostgreSQL меньше чем с MySQL. Да и в принципе MySQL - реляционная БД, в то время как PostgreSQL - объектно-реляционная БД(Oracl'a тоже). MySQL является решением для малых и средних приложений.
  5. Для отладки, в некоторых случаях, имеет смысл использоваться такой конструкцией: function exception_handler($exception) { echo "Exception: ".$exception->getMessage()."\n"; } set_exception_handler('exception_handler'); throw new Exception('Some exception'); echo "Not Executed\n";
  6. false, 0, '', NULL - все ети значения при проверке выдают false. В ПХП механизм исключений не полностью реализирован. Обработка исключений - вот все прекрасно расписано, особенно блок "Достоинства и недостатки". Я иногда их использую в качестве "Использование исключений в целях контроля ошибок повышает читаемость кода, так как позволяет отделить обработку ошибок от самого алгоритма".
  7. Руский в школе не учил, страна не та Не нравится как я пишу, будьте добры поправте.
  8. Инкапсуля́ция — свойство объединить и защитить данные и код в объект и скрыть реализацию объекта от пользователя. При этом пользователю предоставляется только спецификация (интерфейс) объекта. В итоге с помощью 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 может быть доступен из класса потомка.
  9. Этот пост не раскрывает все понятия ООП в ПХП и в общем, он только для ознакомления =) Немного про ооп =) ООП базируется на понятии класса. // объявление класса 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 Если будут желающие я их опишу =) Ну вот так вот в двух словах =))) ЗЫ: Не судите строго . Жду конструктивную критику
  10. Работа с файлами происходит медленней чем выборка из БД. 2s0rr0w не на всех хостингах есть Оракл
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy