class wsGallery extends wsCore { const _PRIVATE = 1; const _PUBLIC = 2; const _HIDDEN = 3; const _SYSTEM = 4; const _PROFILE = 5; private function __construct($gid) { parent::__construct(); $this->gallery = wsCache::galleries()->findOne(array( '_id' => new MongoId($gid) )); $this->full_images = wsCache::images()->find( array('gallery_id' => $gid) ); } static function new($name, $type) { $gallery = array( 'name' => $name, '_type' => $type, 'owner_id' => USER_ID, 'images' => array(), 'requests' => array(), 'accepted' => array() ); wsCache::galleries()->insert($gallery); return new self($gallery['_id']); } } wsGallery::new('My gallery', wsGallery::_PRIVATE);
If you want to do this (or similar)… Forget the `new` keyword:
class wsGallery extends wsCore { const _PRIVATE = 1; const _PUBLIC = 2; const _HIDDEN = 3; const _SYSTEM = 4; const _PROFILE = 5; private function __construct($gid) { parent::__construct(); $this->gallery = wsCache::galleries()->findOne(array( '_id' => new MongoId($gid) )); $this->full_images = wsCache::images()->find( array('gallery_id' => $gid) ); } static function create($name, $type) { $gallery = array( 'name' => $name, '_type' => $type, 'owner_id' => USER_ID, 'images' => array(), 'requests' => array(), 'accepted' => array() ); wsCache::galleries()->insert($gallery); return new self($gallery['_id']); } } wsGallery::create('My gallery', wsGallery::_PRIVATE);
It’s another stupidity of PHP… the new keyword is reserved for instances [eg: new wsGallery()] But why? The parser can’t understand the Regular Expressions? `new Classname()` is not equal with `Classname::new()`.
The first is:
/\bnew\b [a-zA-Z_][a-zA-Z0-9_]*/
and the second is:
/\b[a-zA-Z_][a-zA-Z0-9_]*::[a-zA-Z_][a-zA-Z0-9_]*/
(or similar but the formats aren’t the same… Really not)