|
|
|
| Нужно реализовать объект синглетон, т.е. класс, который бы следил за тем, чтобы бы объект всегда был один, ну или по крайней мере, чтобы соединение было одно...
Как это сделать? | |
|
|
|
|
|
|
|
для: fox2011
(01.03.2012 в 12:34)
| | Создать его не сложно, его пример есть в мануале (если что-то не понятно, сообщите)
<?php
class Example
{
// Hold an instance of the class
private static $instance;
// A private constructor; prevents direct creation of object
private function __construct()
{
echo 'I am constructed';
}
// The singleton method
public static function singleton()
{
if (!isset(self::$instance)) {
$c = __CLASS__;
self::$instance = new $c;
}
return self::$instance;
}
// Example method
public function bark()
{
echo 'Woof!';
}
// Prevent users to clone the instance
public function __clone()
{
trigger_error('Clone is not allowed.', E_USER_ERROR);
}
}
?>
| Другое дело, что смысла в нем на PHP не много, так как этот синглетон действует только в рамках текущего PHP-скрипта. Т.е. при каждом запросе будет создавать новый синглетон. Если это не совсем то, что вам требуется, лучше смотреть в сторону каких-то других механизмов. | |
|
|
|
|
|
|
|
для: cheops
(01.03.2012 в 13:53)
| | Поясните эту строчку if (!isset(self::$instance))
проверка на сущ. переменной $instance? | |
|
|
|
|
|
|
|
для: fox2011
(01.03.2012 в 17:26)
| | Да, совершенно верно, проверка существования статической переменной $instance, в которой храниться объект класса Example. Причем объект всегда один и общий для всех экземпляров класса. | |
|
|
|
|
|
|
|
для: cheops
(01.03.2012 в 17:38)
| | А что значит self :: ? | |
|
|
|
|
|
|
|
для: fox2011
(16.03.2012 в 17:58)
| | Это ссылка на текущий класс, по аналогии с ссылкой на текущий объект $this->, или другими словами тот же $this-> только для статических компонентов класса. | |
|
|
|