Posts Tagged ‘пример’

дружественные классы в PHP

Понедельник, Апрель 7th, 2008

заметка, как продолжение статьи о методах доступа в PHP.

Как известно, в C++, кроме основных трех методов доступа к методам и свойствам классов, есть еще так называемые “дружественные классы” — классы, которым дозволено обращаться к любым методам и свойствам класса, указанного как друга. В PHP данной возможности к сожалению нет, а она так часто бывает необходимой… Зачем оно надо? Например, когда Вам надо создать экземпляр класса, реализующий возможность установки свойств через __set, но при этом Вы хотите свойства указывать более высокоуровневыми свойствами, нежели прямым воздействием на объект. Тогда можно было бы объявить метод __set protected и не заморачиваться, но что, если __set - унаследован от базового класса и объявлен как public? тогда поможет грязный хак :) (more…)

права доступа к свойствам и методам

Четверг, Февраль 28th, 2008

Права доступа к свойствам и методам — это на первый взгляд всего лишь три слова: privat, protected и public. Но что скрывается за ними? Какие преимущества это дает в разработке? И как их правильно использовать? Здесь, как и во всех других аспектах программрования, без практики не разобраться…

Одна из трех основных концепций ООП — наследование (другие две: инкапсуляция и полиморфизм). Вобзем-то именно для нее и были реализованы права доступов. Основаная идея наследования: Дочерний объект, при наследовании (extend) родителя перенимает себе все родительские методы и свойства, а так же может обзавестись своими собственными. Понимая эту базу, можно перейти в всему что находится ниже… (more…)

try..catch VS if…else. Что, когда и почему?

Среда, Февраль 27th, 2008

Эволюция языков программирования приводит иногда к кардинальным изменениям в мировоззрении разработчиков. Такое случилось при появлении пятой ветки PHP, которая принесла новую объектную модель, новые наборы встроенных функций и новые методы обработки ошибок… (more…)

PHP транзакция

Суббота, Июнь 16th, 2007

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

Задача: выполнить скрипт, занимающий большой период времени (секунд 20 например).
Проблема: при нескольких обращениях к скрипту запускалось несколько раз это действие и в итоге процесс либо зависал, либо постоянно обрабатывал данные (например заполнение некой таблицы, которую брать в транзакцию нельзя было на уровне СУБД)

мое решение:

$fname = ROOT."/transaction.lock";
if (!file_exists($fname) || filemtime($fname) < time() - 10 * 60) {
    @unlink($fname);
    $fp = fopen($fname, "w+t");
    fclose($fp);
    chmod($fname, 0777);
    //наши мега действия
    unlink($fname);
}

жду фразы “велосипед” и нормального решения :)))

дамп данных из MySQL

Вторник, Апрель 3rd, 2007

возникла задача реализовать на сайте возможность загрузки полного дампа данных из БД в файл клиента. MySQL средства аля SELECT … INTO OUTFILE не подходят по причине отсутствия (гипотетического) прав на сохранение… Решил писать свое лисапедо :) Вот что получилось:
(more…)

сепарация строк таблицы

Суббота, Март 17th, 2007

Часто возникает желание разграничить табличные данные для удобства восприятия, но обычными средствами часто так неохота это делать… А еще удобно интересующую строку подсвечивать каким-то цветом. Решение:
(more…)

Javascript Trim functions

Суббота, Март 17th, 2007

возможно и велосипед, но ненайдя решения написал вот это:


String.prototype.trim = function () {
    return this.rtrim().ltrim();
}

String.prototype.ltrim = function () {
    for (var i = 0; i < this.length; i++) {
        if (this.charAt(i) != " ") {
            return this.substr(i, this.length - 1);
        }
    }
}

String.prototype.rtrim = function () {
    for (var i = this.length - 1; i >= 0; i--) {
        if (this.charAt(i) != " ") {
            return this.substr(0, i + 1);
        }
    }
}

понадобится вдруг кому - юзайте ;)