Март 05 2008

Перехват обращения к несуществующим свойствам объектов в PHP5

Категория: PHPgugglegum @ 18:52

В строгих языках программирования типа C++ и Java программист обязан явно определять какими свойствами обладает тот или иной класс, причем явно указывая их области видимости (public, protected или private). В PHP4 такой строгости не было и в некоторых случаях это приводило к ошибкам, которые достаточно трудно отловить.

В PHP5 у свойств классов появились области видимости и все стало более-менее строго. Обращение к несуществующему статическому свойству класса

<?php

class A { }

A::$myVar = 'test';

?>

приводит к фатальной ошибке: “Fatal error: Access to undeclared static property: A::$myVar in C:\test.php on line 7″. Однако, для совместимости с PHP4 при обращении к свойству объекта никаких ошибок не генерируется. Продолжить чтение “Перехват обращения к несуществующим свойствам объектов в PHP5″


Март 05 2008

Нюансы автоматической загрузки классов в PHP с использованием __autoload()

Категория: PHPgugglegum @ 18:25

(данный пост был в последствии изменен, см. примечание в конце)

Как известно, в PHP, начиная с 5-ой версии, появилась замечательная возможность загружать классы автоматически по мере возникновения в них необходимости. Теперь, вместо того, чтобы писать в файле каждого класса список используемых файлов классов, достаточно где-нибудь в файле инициализации объявить функцию с именем __autoload(), которая получает в качестве параметра имя требуемого класса и пытается его загрузить. Эта функция — своего рода последний рубеж перед возникновением ошибки “Fatal Error”.

У данного метода есть два преимущества:

  1. Не нужно отслеживать где и какие классы мы используем. Ведь ошибиться здесь очень легко. Например, в одном классе мы используем другой класс, который уже был использован и загружен ранее, и который мы забыли явно объявить через require_once. Скрипт работает нормально, т.к. класс загружен. Но вот мы начали вызывать этот класс из другого места и там требуемый класс еще не был загружен — возникнет фатальная ошибка. Если необходимость в этом классе возникает не постоянно, а лишь в некоторых редких ситуациях (например, при обработке исключений), то отловить это будет крайне сложно.
  2. Нет избыточных вызовов require_once. Ведь если файл с классом загружен, то нет смысла вызывать каждый раз в каждом классе require_once одних и тех же файлов классов.

Однако, есть у данного метода и недостатки. Продолжить чтение “Нюансы автоматической загрузки классов в PHP с использованием __autoload()”


Март 04 2008

Goodbye, privacy!

Категория: Безопасностьgugglegum @ 20:24

Не болтай!Не успели отгреметь выборы, как широкой общественности стал доступен приказ №6 от минсвязи РФ, который обязывает всех операторов связи предоставлять ФСБ-шникам техническую возможность без всякого ведома и согласия оператора получать доступ к любой пересылаемой информации пользователей (телефонные звонки, SMS, электронная почта, ICQ, вобщем все, что не имеет встроенного механизма шифрования на концах), к данным об оказанных услугах (детализация звонков, выставленные счета), и к информации о местоположении абонента при совершении звонков с сотового.

Собственно, все это было и раньше, но не было официального закона. ФСБ-шники могли придти к оператору (провайдеру) и потребовать какие-нибудь логи. Оператор им эти логи обычно давал. Но в этом случае оператор хотя бы знал, что ФСБ-шникам понадобилась информация и какая именно. Кроме этого, провайдер теоретически мог отказать или сослаться на отсутствие технической возможности… А теперь не только не может, но и не знает когда и какую информацию получают ФСБ-шники. При этом ФСБ-шникам для этого не нужно даже отрывать свой зад от кресла.

Какие выводы из этого можно сделать? Продолжить чтение “Goodbye, privacy!”


Март 04 2008

Выборы, выборы — кандидаты пи-пи-пи…

Категория: Uncategorizedgugglegum @ 20:07

Впервые за всю свою жизнь столкнулся со случаем, когда выборы в нашей стране просто безальтернативные. Избирателей лишили двух важнейших рычагов управления выборами: убрали пункт “против всех” и отменили процент явки, при которой выборы считаются действительными. Теперь кого людям предложили — того и будем мы иметь (а если быть честнее, то “тот и будет иметь нас”) последующие 4 года.

Мне реально ни один кандидат не нравился. Медведев не нравился по тому, как проводилась его рекламная кампания — еще за несколько месяцев до выборов о нем повсеместно говорилось как о будущем президенте. В интернете на многих новостных сайтах часто можно было встретить заголовки вида “Будущий президент России Медведев Д.А. …”. Мне любопытно, новостным сайтам кто-то доплачивал за такие оговорки или это повсеместная неполиткорректность СМИ? Продолжить чтение “Выборы, выборы — кандидаты пи-пи-пи…”