Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: private function __construct()
 
 автор: Суррогат   (13.12.2010 в 16:49)   письмо автору
 
 

PHP 5.3 ругается на закрытый конструктор private function __construct()

как запретить прямое создание объекта????

  Ответить  
 
 автор: neadekvat   (13.12.2010 в 17:00)   письмо автору
 
   для: Суррогат   (13.12.2010 в 16:49)
 

Ругается в каком смысле?
Я, честно, не работал с php 5.3, но, может, вы таки пытаетесь создать объект этого класса?

  Ответить  
 
 автор: Суррогат   (13.12.2010 в 17:02)   письмо автору
 
   для: neadekvat   (13.12.2010 в 17:00)
 

Так и есть... разобрался:)

  Ответить  
 
 автор: psychomc   (13.12.2010 в 17:40)   письмо автору
 
   для: Суррогат   (13.12.2010 в 16:49)
 

класс сделайте абстрактным

  Ответить  
 
 автор: neadekvat   (13.12.2010 в 17:41)   письмо автору
 
   для: psychomc   (13.12.2010 в 17:40)
 

С какой целью?

  Ответить  
 
 автор: kosta_in_net   (13.12.2010 в 17:48)   письмо автору
 
   для: neadekvat   (13.12.2010 в 17:41)
 

Чтоб избежать конкретики :)

  Ответить  
 
 автор: psychomc   (13.12.2010 в 17:48)   письмо автору
 
   для: neadekvat   (13.12.2010 в 17:41)
 

с целью запрещения создания объекта

  Ответить  
 
 автор: neadekvat   (13.12.2010 в 17:52)   письмо автору
 
   для: psychomc   (13.12.2010 в 17:48)
 

А, понял о чем вы. Сначала подумалось, что это вы так советуете "обойти" ошибку, выдаваемую интерпритатором о.О

  Ответить  
 
 автор: psychomc   (13.12.2010 в 18:08)   письмо автору
 
   для: neadekvat   (13.12.2010 в 17:52)
 

:-)

  Ответить  
 
 автор: psychomc   (13.12.2010 в 18:32)   письмо автору
 
   для: Суррогат   (13.12.2010 в 16:49)
 

кстати php правильно ругается.
ибо private function __construct() по логике - это брэд.

  Ответить  
 
 автор: neadekvat   (13.12.2010 в 18:39)   письмо автору
 
   для: psychomc   (13.12.2010 в 18:32)
 

Отчего же бред?
Насколько я знаю, есть такой шаблон проектирования:
<?php
class someclass
{
    private function 
__construct() {}

    public static function 
make_object()
    {
        return new 
someclass;
    }
}

$obj someclass::make_object();

  Ответить  
 
 автор: psychomc   (13.12.2010 в 20:04)   письмо автору
 
   для: neadekvat   (13.12.2010 в 18:39)
 

чес сказать в первый раз такое вижу.
в чем смысл? создается объект "более изящным" способом? :)
мне как-то всегда казалось, что если конструктор недоступен из вне или из производных классов, то не нужен он

  Ответить  
 
 автор: neadekvat   (13.12.2010 в 20:17)   письмо автору
 
   для: psychomc   (13.12.2010 в 20:04)
 

Чтобы нельзя было создать объект.
Например, если необходимо проследить, чтобы у класс был только один объект.

  Ответить  
 
 автор: psychomc   (14.12.2010 в 00:16)   письмо автору
 
   для: neadekvat   (13.12.2010 в 20:17)
 

хм...надо пересмотреть мое видение ситуации. этот вариант мне уже кажется более правильным, нежели сделать класс абстрактным :)

  Ответить  
 
 автор: ride   (13.12.2010 в 20:32)   письмо автору
 
   для: 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(); 

  Ответить  
 
 автор: neadekvat   (13.12.2010 в 20:35)   письмо автору
 
   для: ride   (13.12.2010 в 20:32)
 

Таки да, два раза думал, писать или не писать, что там еще статический член надо вводить, решил, что для демонстрации работоспособности это будет лишнее)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования