Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 544979
            [titulo] => Problemas com Classes PHP
            [dataCadastro] => DateTime Object
                (
                    [date] => 2016-02-07 12:50:51
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 269142
            [status] => A
            [isExample] => 
            [NomeUsuario] => William 
            [Apelido] => William (Devwilliam)
            [Foto] => 269142_20150809195205.jpg
            [Conteudo] => [quote]
Na época em que peguei este(até então open source) sistema ele funcionava e agora me retorna este erro.
[/quote]

O mais estranho era funcionar antes, porque agora está normal !

Para essa classe NÃO EXIBIR ERRO ela teria que ter o parâmetro "$class" com default = null, como abaixo:
[code]
abstract class Kernel {

public static function getInstance($class=null) {
if (!isset(self::$Instances[$class])) {
$object = new $class;
self::$Instances[$class] = $object;
}
return self::$Instances[$class];
}
}
[/code]

Mas mesmo assim não funcionaria porque ela segue o pattern Singleton e por isso precisa do nome da classe para verificar se existe um objeto dessa classe instanciado em memória! ) )

Problemas com Classes PHP

PHP
Luiz Régis
   - 06 fev 2016

Boa noite pessoal.
Estou eu aqui de novo para solicitar uma ajuda divina.
OK sem embromar, eu a muitos baixei um sistema que era todo feito em PHP OO.
Na época os servidores eram na sua maioria em PHP 5.2.
Neste tal sistema(eyeOS para os interessados) tem uma classe KERNEL que nela existe a seguinte função:
#Código

abstract class Kernel {

 public static function getInstance($class) {   
		if (!isset(self::$Instances[$class])) {
			$object = new $class;
			self::$Instances[$class] = $object;
		}
		return self::$Instances[$class];
	}
}

Notem que a função getInstance solicita um parâmetro $class.
O problema esta exatamente ai, as outras classes que estendem KERNEL não passam este parâmetro e o PHP retorna um erro fatal.
#Código
class MMapGroup extends Kernel implements IMMap {
	public static function getInstance() {
		return parent::getInstance();
	}
}

Na época em que peguei este(até então open source) sistema ele funcionava e agora me retorna este erro.
Alguém sabe como resolver isto?

Post mais votado

William (devwilliam)
   - 07 fev 2016


Citação:

Na época em que peguei este(até então open source) sistema ele funcionava e agora me retorna este erro.


O mais estranho era funcionar antes, porque agora está normal !

Para essa classe NÃO EXIBIR ERRO ela teria que ter o parâmetro "$class" com default = null, como abaixo:
#Código

abstract class Kernel {
 
 public static function getInstance($class=null) {   
        if (!isset(self::$Instances[$class])) {
            $object = new $class;
            self::$Instances[$class] = $object;
        }
        return self::$Instances[$class];
    }
}


Mas mesmo assim não funcionaria porque ela segue o pattern Singleton e por isso precisa do nome da classe para verificar se existe um objeto dessa classe instanciado em memória!

Luiz Régis
   - 07 fev 2016


Citação:
Para essa classe NÃO EXIBIR ERRO ela teria que ter o parâmetro "$class" com default = null, como abaixo:
[...]
Mas mesmo assim não funcionaria porque ela segue o pattern Singleton e por isso precisa do nome da classe para verificar se existe um objeto dessa classe instanciado em memória!


Pois é William, eu tentei isto e até passar a classe em si assim:
#Código

class MMapGroup extends Kernel implements IMMap {
    public static function getInstance(__CLASS__) {
        return parent::getInstance();
    }
}


Mas como eu previ o erro continuava.

Eu gostaria muito de tornar este código funcional, trata-se de um webOS. Mas não entendo o erro.

Luiz Régis
   - 12 fev 2016

Se alguém poder ajudar, achei no GitHub um upload do mesmo projeto.

eyeOS

Mas esta com o mesmo erro quando baixado e instalado.
A maioria das classes que acusam este erro estão na pasta eyeos/system/kernel/services/

Alguém me mande uma luz por favor...