ID:               39209
 User updated by:  dtyschenko at soft-ukraine dot com
 Reported By:      dtyschenko at soft-ukraine dot com
 Status:           Bogus
 Bug Type:         *General Issues
 Operating System: Any
 PHP Version:      5.1.6
 New Comment:

Sorry, I will explain:

<?php

abstract class aSingleton {
        private static $_instance;
        private final function __construct() {}
        public final static function getInstance() {
                if (!self::$_instance) {
                        self::$_instance = new self;
                }
                
                return self::$_instance;
        }
        public final function __clone() {
                throw new Exception('denied');
        }
}

class cStorage extends aSingleton {
        
}

$obj = cStorage::getInstance();

?>

Fatal error: Cannot instantiate abstract class aSingleton in
/var/www/html/autosave/cStorage.php on line 8

Why self is of class aSingleton when I call it as
cStorage::getInstance();

Should be of class cStorage


Previous Comments:
------------------------------------------------------------------------

[2006-10-20 09:46:34] [EMAIL PROTECTED]

This is not a forum, use lists for discussions.

------------------------------------------------------------------------

[2006-10-20 09:35:43] dtyschenko at soft-ukraine dot com

Description:
------------
As I know all functions in PHP are virtual. This mean that $this always
is type of object, but self is type of class where function is called.
So when I try to execute new self, it's creating instance of class
where function was executed. Maybe self should be something like
virtual too?



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=39209&edit=1

Reply via email to