|
|
|
| PHP 5.3 ругается на закрытый конструктор private function __construct()
как запретить прямое создание объекта???? | |
|
|
|
|
|
|
|
для: Суррогат
(13.12.2010 в 16:49)
| | Ругается в каком смысле?
Я, честно, не работал с php 5.3, но, может, вы таки пытаетесь создать объект этого класса? | |
|
|
|
|
|
|
|
для: neadekvat
(13.12.2010 в 17:00)
| | Так и есть... разобрался:) | |
|
|
|
|
|
|
|
для: Суррогат
(13.12.2010 в 16:49)
| | класс сделайте абстрактным | |
|
|
|
|
|
|
|
для: psychomc
(13.12.2010 в 17:40)
| | С какой целью? | |
|
|
|
|
|
|
|
для: neadekvat
(13.12.2010 в 17:41)
| | Чтоб избежать конкретики :) | |
|
|
|
|
|
|
|
для: neadekvat
(13.12.2010 в 17:41)
| | с целью запрещения создания объекта | |
|
|
|
|
|
|
|
для: psychomc
(13.12.2010 в 17:48)
| | А, понял о чем вы. Сначала подумалось, что это вы так советуете "обойти" ошибку, выдаваемую интерпритатором о.О | |
|
|
|
|
|
|
|
для: neadekvat
(13.12.2010 в 17:52)
| | :-) | |
|
|
|
|
|
|
|
для: Суррогат
(13.12.2010 в 16:49)
| | кстати php правильно ругается.
ибо private function __construct() по логике - это брэд. | |
|
|
|
|
|
|
|
для: psychomc
(13.12.2010 в 18:32)
| | Отчего же бред?
Насколько я знаю, есть такой шаблон проектирования:
<?php
class someclass
{
private function __construct() {}
public static function make_object()
{
return new someclass;
}
}
$obj = someclass::make_object();
|
| |
|
|
|
|
|
|
|
для: neadekvat
(13.12.2010 в 18:39)
| | чес сказать в первый раз такое вижу.
в чем смысл? создается объект "более изящным" способом? :)
мне как-то всегда казалось, что если конструктор недоступен из вне или из производных классов, то не нужен он | |
|
|
|
|
|
|
|
для: psychomc
(13.12.2010 в 20:04)
| | Чтобы нельзя было создать объект.
Например, если необходимо проследить, чтобы у класс был только один объект. | |
|
|
|
|
|
|
|
для: neadekvat
(13.12.2010 в 20:17)
| | хм...надо пересмотреть мое видение ситуации. этот вариант мне уже кажется более правильным, нежели сделать класс абстрактным :) | |
|
|
|
|
|
|
|
для: neadekvat
(13.12.2010 в 18:39)
| | у вас тут один объект никак не получится)
если вы хотели привести пример шаблона singleton, то примерно так
<?php
class Singleton
{
static private $_instance = null;
private function __construct() {}
public static function getInstance()
{
if(self::$_instance === null)
self::$_instance = new self();
return self::$_instance;
}
}
$obj = Singleton::getInstance();
|
| |
|
|
|
|
|
|
|
для: ride
(13.12.2010 в 20:32)
| | Таки да, два раза думал, писать или не писать, что там еще статический член надо вводить, решил, что для демонстрации работоспособности это будет лишнее) | |
|
|
|