<?php
$data = get_class_methods('className');
print("<pre>");
print_r($data);
print("</pre>");
?>
* This source code was highlighted with Source Code Highlighter.Получим массив искомых методов! ;)
Friday, February 12, 2010
Как просмотреть все методы объекта php
А вот так!
Просмотр свойств объекта в PHP 5
PHP 5 предоставляет механизм итераторов для получения списка всех свойств какого-либо объекта
Выведет
По умолчанию, в итерации будут участвовать все свойства, объявленные как public.
<?php
class MyClass {
public $var1 = 'value 1';
public $var2 = 'value 2';
public $var3 = 'value 3';
protected $protected = 'protected';
private $private = 'private';
}
$class = new MyClass();
foreach($class as $key => $value) {
print "$key => $value\n";
}
?>
* This source code was highlighted with Source Code Highlighter.Выведет
var1 => value 1
var2 => value 2
var3 => value 3
* This source code was highlighted with Source Code Highlighter.По умолчанию, в итерации будут участвовать все свойства, объявленные как public.
Saturday, February 6, 2010
Магические Методы php
В дословном переводе — Магические Методы (Magic Methods). Эти методы зарезирвированы в php. Они начинаются с двойного подчеркивания (__).
Список всех Магических методов:
* __construct
* __destruct
* __call
* __callStatic
* __get
* __set
* __isset
* __unset
* __sleep
* __wakeup
* __toString
* __set_state
* __clone
Основные и наиболее используемые методы - это __construct, __destruct, конструктор и деструктор. С ними понятно.
Существуют также __call, __get, __set.
Эти методы связанны с перегрузкой, т.е. мы можем выполнить к примеру такой метод $object->setValue(30) даже если он фактически отсутствует. Во время выполнения управление будет отдано методу __call:
__get и __set выполняют похожие операции, но не с методами, а со свойствами класса.
__sleep и __wakeup вызываются только из функций serialize и unserialize.
__sleep до выполнения команды serialize над данным объектом, она возвращает имена переменных, которые нужно сериализовать.
__wakeup в свою очередь - до выполнения команды unserialize.
__toString
При обращении к классу как к строке, PHP возвращает ошибку:
Также есть метод __clone, он вызывается только при клонировании объекта с помощью оператора clone. При отсутствии этого метода, он подставится автоматически и скопирует все свойства объекта в новый. Можно самостоятельно написать метод __clone и таким образом самому определить, какие свойства будут переданы в объект-клон.
Список всех Магических методов:
* __construct
* __destruct
* __call
* __callStatic
* __get
* __set
* __isset
* __unset
* __sleep
* __wakeup
* __toString
* __set_state
* __clone
Основные и наиболее используемые методы - это __construct, __destruct, конструктор и деструктор. С ними понятно.
Существуют также __call, __get, __set.
Эти методы связанны с перегрузкой, т.е. мы можем выполнить к примеру такой метод $object->setValue(30) даже если он фактически отсутствует. Во время выполнения управление будет отдано методу __call:
function __call($m, $a) {
...
}где $m = ‘getValue’, а $a = 30.__get и __set выполняют похожие операции, но не с методами, а со свойствами класса.
__sleep и __wakeup вызываются только из функций serialize и unserialize.
__sleep до выполнения команды serialize над данным объектом, она возвращает имена переменных, которые нужно сериализовать.
__wakeup в свою очередь - до выполнения команды unserialize.
__toString
При обращении к классу как к строке, PHP возвращает ошибку:
$class = new TestClass('Привет');
echo $class;
Можно для этой цели создать магический метод __toString в нужном классе.class TestClass {
public $foo;
public function __construct($foo) {
$this->foo = $foo;
}
public function __toString() {
return $this->foo;
}
}
__cloneТакже есть метод __clone, он вызывается только при клонировании объекта с помощью оператора clone. При отсутствии этого метода, он подставится автоматически и скопирует все свойства объекта в новый. Можно самостоятельно написать метод __clone и таким образом самому определить, какие свойства будут переданы в объект-клон.
Sunday, November 15, 2009
Регулярные выражения в JavaScript
Регулярные выражения служат для того, чтобы иметь возможность задавать образец, с которым можно сравнивать строки. Регулярное выражение может показать, например, соответствует ли даное слово образцу. Причем, регулярные выражения (иначе, PCRE) могут сравнивать не только фиксированные символы образца и проверяемых строк. Они могут искать соответствия некоторых заранее заданных конструкций. Например, с помощью регулярных выражений можно найти все слова, ограниченные пробелами с двух сторон.
Существуют два способа задания регулярных выражений - сокращенный и формальный.
Существуют два способа задания регулярных выражений - сокращенный и формальный.
var reg = /pattern/; //сокращенный
var reg = new RegExp("pattern"); //формальный
Labels:
JavaScript,
PCRE,
программирование
Tuesday, August 12, 2008
Регулярные выражения в РНР
Достаточно часто приходится работать с регулярными выражениями. В этом посте - основы, которые лучше держать в голове, но если вдруг они забудутся - то можно освежить память.
Итак.
Регулярные выражения - это усовершенствованная система шаблонов. Сначала пишется шаблон, затем с помощью одной из встроенных функций РНР он применяется к текстовой строке (регулярные выражения используются исключительно для работы со строками).
Шаблон определяется комбинацией символов, групп и классов.
Литералы
Первый тип символов, используемый для создания шаблона. Он обозначает только то, что обозначает, и не более того.
Например,шаблону «а» будет соответствовать только буква «а»,
шаблону «ab» - только «ab» и т.д.
Литералы позволяют находить точные соответствия.
Метасимволы
Более сложной структурой, чем литералы, являются метасимволы. Это специальные символы, имеющие более широкое значение. Они приведены в таблице.
(И то, чего нет в таблице, здесь "\s" - пробел)
Так, если «а» означает просто «а», то первый метасимвол, точка (.), отождествляется с любым отдельным символом (а, 1, % и т.д.).
Есть три метасимвола, позволяющие находить многочисленные соответствия:
«а*» отождествляется с нулем или любым количеством букв «а» (а, аа,ааа и т.д.);
«а+» отождествляется с одной или более «а» (а, аа, ааа и т.д., но хотя бы одна должна быть);
«а?» отождествляется с нулем или одной буквой «а».
Для поиска определенного количества одной буквы необходимо поместить в фигурные скобки диапазон ({}), указав либо конкретное число, либо минимум, либо и минимум и максимум.
Например,
«а {3}» будет соответствовать только «ааа»;
«а {3 ,}» - ааа, аааа и т.д. (три или больше букв «а»);
«а {3 , 5}» - ааа,аааа и ааааа (между тремя и пятью буквами включительно).
Знак «крышечка» ^, тот, что обычно представлен на клавиатуре над цифрой 6) будет соответствовать строке, начинающейся со следующей за знаком буквы. Этот знак можно условно представить как псевдосимвол, с которого начинается каждая строка.
Знак доллара $ отождествляется со строкой, которая заканчивается предшествующей этому символу буквой. Его также можно представить как самый последний символ в строке, обозначающий переход на новую строку.
В регулярных выражениях также используется знак вертикальной черты | как эквивалент слова «или».
Например, запись а | b будет соответствовать строкам а или b,
а запись gre | ay будет отождествляться с обоими вариантами написания названия цвета (по-английски и grey, и gray означают «серый»).
Специальные символы ". [ ] $ ( ) | * ? {} \ в шаблоне должны быть экранированы посредством поставленного перед ними обратного слеша.
Сопоставление с шаблонами
В РНР есть две встроенные функции, предназначенные специально для сопоставления с шаблоном в строке: еrеg ( ) и eregi ( ) .
Разница между ними состоит в том, что функция еrеg ( ) реагирует на регистр, a eregi () - нет, то есть не различает строчные и прописные буквы.
Значение обеих функций будет истинным, если произошло совпадение с шаблоном, и ложным в противном случае.
Ниже представлены два способа использования этих функций:
Итак.
Регулярные выражения - это усовершенствованная система шаблонов. Сначала пишется шаблон, затем с помощью одной из встроенных функций РНР он применяется к текстовой строке (регулярные выражения используются исключительно для работы со строками).
Шаблон определяется комбинацией символов, групп и классов.
Литералы
Первый тип символов, используемый для создания шаблона. Он обозначает только то, что обозначает, и не более того.
Например,шаблону «а» будет соответствовать только буква «а»,
шаблону «ab» - только «ab» и т.д.
Литералы позволяют находить точные соответствия.
Метасимволы
Более сложной структурой, чем литералы, являются метасимволы. Это специальные символы, имеющие более широкое значение. Они приведены в таблице.
(И то, чего нет в таблице, здесь "\s" - пробел)
Так, если «а» означает просто «а», то первый метасимвол, точка (.), отождествляется с любым отдельным символом (а, 1, % и т.д.).
Есть три метасимвола, позволяющие находить многочисленные соответствия:
«а*» отождествляется с нулем или любым количеством букв «а» (а, аа,ааа и т.д.);
«а+» отождествляется с одной или более «а» (а, аа, ааа и т.д., но хотя бы одна должна быть);
«а?» отождествляется с нулем или одной буквой «а».
Для поиска определенного количества одной буквы необходимо поместить в фигурные скобки диапазон ({}), указав либо конкретное число, либо минимум, либо и минимум и максимум.
Например,
«а {3}» будет соответствовать только «ааа»;
«а {3 ,}» - ааа, аааа и т.д. (три или больше букв «а»);
«а {3 , 5}» - ааа,аааа и ааааа (между тремя и пятью буквами включительно).
Знак «крышечка» ^, тот, что обычно представлен на клавиатуре над цифрой 6) будет соответствовать строке, начинающейся со следующей за знаком буквы. Этот знак можно условно представить как псевдосимвол, с которого начинается каждая строка.
Знак доллара $ отождествляется со строкой, которая заканчивается предшествующей этому символу буквой. Его также можно представить как самый последний символ в строке, обозначающий переход на новую строку.
В регулярных выражениях также используется знак вертикальной черты | как эквивалент слова «или».
Например, запись а | b будет соответствовать строкам а или b,
а запись gre | ay будет отождествляться с обоими вариантами написания названия цвета (по-английски и grey, и gray означают «серый»).
Специальные символы ". [ ] $ ( ) | * ? {} \ в шаблоне должны быть экранированы посредством поставленного перед ними обратного слеша.
Сопоставление с шаблонами
В РНР есть две встроенные функции, предназначенные специально для сопоставления с шаблоном в строке: еrеg ( ) и eregi ( ) .
Разница между ними состоит в том, что функция еrеg ( ) реагирует на регистр, a eregi () - нет, то есть не различает строчные и прописные буквы.
Значение обеих функций будет истинным, если произошло совпадение с шаблоном, и ложным в противном случае.
Ниже представлены два способа использования этих функций:
ereg("pattern", "string");
или
$Pattern = "pattern";
$String = "string";
eregi($Pattern, $String);
Subscribe to:
Posts (Atom)
