Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Will Fernando

[Resolvido] acessar atributo do ArrayIterator

Recommended Posts

opa galera ..

 

object(ArrayIterator)#1 (1) {

["storage":"ArrayIterator":private]=>

array(1) {

["Param"]=>

string(1) "1"

}

}

 

observem que nesse caso quando tento acessar o atributo "Param" retorna null sendo que nele esta contido o numero 1, talvez seja pois o storage esta definido como private segundo o var_dump, mas entao porque nesse outro exemplo eu consigo acessa-lo ?

<?php
$Get = New ArrayIterator($_GET);
echo '<pre>';
var_dump($Get);  
echo '</pre>';
if(is_numeric($Get->Param)){
switch ($Get->Param) {
    case 1:
        echo " é 1";
        break;
    case 2:
        echo "é 2";
        break;
    case 3:
        echo "é 3";
        break;
    default:
    	echo 'Parametro invalido !';
}

aqui o acesso é possivel

 

public function getListen(PDO $Conn){
		$OListen = null;
		try{
		   $Listen = $Conn->prepare('
SQL 
		   ');
		   if($Listen->execute()){
		   		$OListen = new ArrayIterator($Listen->fetchAll(PDO::FETCH_OBJ));		   
			}else{
				throw new RuntimeException( sprintf( 'Erro ao executar a consulta: %s' , implode( ',' , $Conn->errorInfo() ) ) , $Conn->errorCode() );
			}
		}
		catch(PDOException $EListen){
          throw new RuntimeException( sprintf( 'Erro ao executar na listagem: %s', $EListen->getMessage() ) );
		}
		return $OListen;
	}

valww

Compartilhar este post


Link para o post
Compartilhar em outros sites

novidades ... fazendo alguns testes deixando o parametro null.. ele não caiu nem no if nem no else

 

echo '<pre>';
var_dump($_GET['Param']);  
echo '</pre>';
if(is_numeric($_GET['Param'])){
	echo 'nulo é numerico ? o.o ';
}
if(is_numeric($_GET['Param'])){
switch ($_GET['Param']) {
    case 1:
        echo utf8_encode("é 1");
        break;
    case 2:
        echo utf8_encode("é 2");
        break;
    case 3:
        echo utf8_encode("é 3");
        break;
    default:
    	echo 'Parametro invalido !';
}
}else{
echo 'se é null entao cai aqui praga :P';
}

*PHP hoje ta bem problematico aqui.. ate final de semana tava tudo funcionando O.o ..

Compartilhar este post


Link para o post
Compartilhar em outros sites

object(ArrayIterator)#1 (1) {

["storage":"ArrayIterator":private]=>

array(1) {

["Param"]=>

string(1) "1"

}

}

 

Will, você não vai conseguir acessar essa propriedade assim, pelo simples fato dela ser privada, nesse caso, você deve utilizar os métodos do Iterator para recuperar o valor que deseja:

 

$teste = new ArrayIterator( array( 'Param' => '1' ) );

var_dump( $teste );

 

Saída:

object(ArrayIterator)#1 (1) {
 ["storage":"ArrayIterator":private]=>
 array(1) {
	["Param"]=>
	string(1) "1"
 }
}

Recuperando o valor:

<?php
$teste = new ArrayIterator( array( 'Param' => '1' ) );

if ( is_numeric( $teste->current() ) ){
echo 'O chave atual do iterator é: ' , $teste->key();

switch ( $teste->current() ){
	case '1' :
		echo ', e seu valor é 1';
		break;
	case '2' :
		echo ', e seu valor é 2';
		break;
	case '3' :
		echo ', e seu valor é 3';
		break;
	default :
		echo ', e seu valor é ' , $teste->current();
		break;
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

andei dando uma estudada la mas.. ainda nao deu pra saca .. =\ ..

 

meu objeto eh

 

object(ArrayIterator)#1 (1) {

["storage":"ArrayIterator":private]=>

array(1) {

[0]=>

object(stdClass)#2 (3) {

["USUARIO"]=>

string(7) "meriane"

["SENHA"]=>

string(6) "123456"

["NIVEL"]=>

string(1) "1"

}

}

}

 

como acesso o parametro "NIVEL" usando o current ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Will, veja só:

 

 

Reproduzindo seu iterator:

<?php
$iterator = new ArrayIterator( array( (object) array( 'USUARIO' => 'meriane' , 'SENHA' => '123456' , 'NIVEL' => '1' ) ) );

var_dump( $iterator );

 

A saída é exatamente a mesma:

object(ArrayIterator)#1 (1) {
 ["storage":"ArrayIterator":private]=>
 array(1) {
	[0]=>
	object(stdClass)#2 (3) {
 	["USUARIO"]=>
 	string(7) "meriane"
 	["SENHA"]=>
 	string(6) "123456"
 	["NIVEL"]=>
 	string(1) "1"
	}
 }
}

Agora, lidando com os objetos do iterator:

$iterator = new ArrayIterator( array( (object) array( 'USUARIO' => 'meriane' , 'SENHA' => '123456' , 'NIVEL' => '1' ) ) );

for ( $iterator->rewind() ; $iterator->valid() ; $iterator->next() ){
$current = $iterator->current(); //usando o método current() para recuperar o item atual

echo 'O usuário atual é ' , $current->USUARIO , ' e seu nível é: ' , $current->NIVEL , PHP_EOL;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.