Error in instanceof in foreach

Asked

Viewed 26 times

0

I have the following function:

public function instanciaClasseArray ( $classe, $array ) : bool {

    foreach ($array as $objeto) : 

       if ( !($objeto instanceof $classe) ) return false;

    endforeach;

    return true;

}

And the next array of objects:

Array
(
    [0] => classes\mvc\modelos\EnderecosModelos Object
        (
            [idEnderecos:classes\mvc\modelos\EnderecosModelos:private] => 144
            [idFonte:classes\mvc\modelos\EnderecosModelos:private] => 50
            [fonte:classes\mvc\modelos\EnderecosModelos:private] => clientes
            [cep:classes\mvc\modelos\EnderecosModelos:private] => 36881038
            [tipo:classes\mvc\modelos\EnderecosModelos:private] => Rua
            [endereco:classes\mvc\modelos\EnderecosModelos:private] => Rua Francisco José Bane
            [numero:classes\mvc\modelos\EnderecosModelos:private] => s/n
            [complemento:classes\mvc\modelos\EnderecosModelos:private] => Lote 06
            [bairro:classes\mvc\modelos\EnderecosModelos:private] => São Francisco
            [cidade:classes\mvc\modelos\EnderecosModelos:private] => 36000
            [estado:classes\mvc\modelos\EnderecosModelos:private] => MG
            [referencia:classes\mvc\modelos\EnderecosModelos:private] => Ao lado das rádios 98 e 102
        )

    [1] => classes\mvc\modelos\EnderecosModelos Object
        (
            [idEnderecos:classes\mvc\modelos\EnderecosModelos:private] => 165
            [idFonte:classes\mvc\modelos\EnderecosModelos:private] => 50
            [fonte:classes\mvc\modelos\EnderecosModelos:private] => clientes
            [cep:classes\mvc\modelos\EnderecosModelos:private] => 36881038
            [tipo:classes\mvc\modelos\EnderecosModelos:private] => Rua
            [endereco:classes\mvc\modelos\EnderecosModelos:private] => Francisco José Bane
            [numero:classes\mvc\modelos\EnderecosModelos:private] => s/n
            [complemento:classes\mvc\modelos\EnderecosModelos:private] => Lote 06
            [bairro:classes\mvc\modelos\EnderecosModelos:private] => São Francisco
            [cidade:classes\mvc\modelos\EnderecosModelos:private] => 36000
            [estado:classes\mvc\modelos\EnderecosModelos:private] => MG
            [referencia:classes\mvc\modelos\EnderecosModelos:private] => Ao lado das rádios 98 e 102
        )

    [2] => classes\mvc\modelos\EnderecosModelos Object
        (
            [idEnderecos:classes\mvc\modelos\EnderecosModelos:private] => 166
            [idFonte:classes\mvc\modelos\EnderecosModelos:private] => 50
            [fonte:classes\mvc\modelos\EnderecosModelos:private] => clientes
            [cep:classes\mvc\modelos\EnderecosModelos:private] => 36881038
            [tipo:classes\mvc\modelos\EnderecosModelos:private] => Rua
            [endereco:classes\mvc\modelos\EnderecosModelos:private] => Francisco José Bane
            [numero:classes\mvc\modelos\EnderecosModelos:private] => s/n
            [complemento:classes\mvc\modelos\EnderecosModelos:private] => Lote 06
            [bairro:classes\mvc\modelos\EnderecosModelos:private] => São Francisco
            [cidade:classes\mvc\modelos\EnderecosModelos:private] => 36000
            [estado:classes\mvc\modelos\EnderecosModelos:private] => MG
            [referencia:classes\mvc\modelos\EnderecosModelos:private] => Ao lado das rádios 98 e 102
        )

    [3] => classes\mvc\modelos\EnderecosModelos Object
        (
            [idEnderecos:classes\mvc\modelos\EnderecosModelos:private] => 168
            [idFonte:classes\mvc\modelos\EnderecosModelos:private] => 50
            [fonte:classes\mvc\modelos\EnderecosModelos:private] => clientes
            [cep:classes\mvc\modelos\EnderecosModelos:private] => 36881038
            [tipo:classes\mvc\modelos\EnderecosModelos:private] => Rua
            [endereco:classes\mvc\modelos\EnderecosModelos:private] => Francisco José Bane
            [numero:classes\mvc\modelos\EnderecosModelos:private] => s/n
            [complemento:classes\mvc\modelos\EnderecosModelos:private] => Lote 06
            [bairro:classes\mvc\modelos\EnderecosModelos:private] => São Francisco
            [cidade:classes\mvc\modelos\EnderecosModelos:private] => 36000
            [estado:classes\mvc\modelos\EnderecosModelos:private] => MG
            [referencia:classes\mvc\modelos\EnderecosModelos:private] => Ao lado das rádios 98 e 102
        )

    [4] => classes\mvc\modelos\EnderecosModelos Object
        (
            [idEnderecos:classes\mvc\modelos\EnderecosModelos:private] => 169
            [idFonte:classes\mvc\modelos\EnderecosModelos:private] => 50
            [fonte:classes\mvc\modelos\EnderecosModelos:private] => clientes
            [cep:classes\mvc\modelos\EnderecosModelos:private] => 36881038
            [tipo:classes\mvc\modelos\EnderecosModelos:private] => Rua
            [endereco:classes\mvc\modelos\EnderecosModelos:private] => Rua Francisco José Bane
            [numero:classes\mvc\modelos\EnderecosModelos:private] => s/n
            [complemento:classes\mvc\modelos\EnderecosModelos:private] => Lote 06
            [bairro:classes\mvc\modelos\EnderecosModelos:private] => São Francisco
            [cidade:classes\mvc\modelos\EnderecosModelos:private] => 36000
            [estado:classes\mvc\modelos\EnderecosModelos:private] => MG
            [referencia:classes\mvc\modelos\EnderecosModelos:private] => Ao lado das rádios 102 e 98
        )

)

Here’s what I’m doing form:

print_r (instanciaClasseArray ('EnderecosModelos', $array) );

The result is coming false.

Where is the error?

1 answer

1


The error occurs because the class name is being passed as a string. The right thing would be for you to import the class into that code of yours and use it as follows:

print_r (instanciaClasseArray (EnderecosModelos::class, $array) );
  • 1

    Thank you very much. That’s right!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.