Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola gente boa noite
to com uma duvida em classe
o lance e o seguinte
eu crio um banco de dados bem simples
usuarios
id nome status
class usuario() {
function lista_todos_usuario() {
// minha ideia e listar todos os usuários com seu status
//e salvar essa consulta essa sql num variavel
//para fica disponível para a classe toda
}
function lista ativo() {
//if se a consulta acima for executada eu pego os dados e faço um if
//sem usar uma segunda sql
//senao eu faço um novo sql
}
function lista usuario_inativo
}
isso e possível em classe ou eu viajei na ideia de salva dados de execução de um function para outra :)
Ola gabriel boa noite prazer em conhece-lo
pelo que eu vi da sua ideia me parece que você deu uma "sobrecarga de funcao" vou chama a execucao da funcao acima para
dentro da outra.
Minha ideia era pega so o resultado desse sql que você montou
function lista_todos_usuario() {
$sql = mysql_query("SELECT * FROM tabela WHERE status = 'online'") or die(mysql_error());
$linha=mysql_fetch_array($sql);
return $linha;
}
function lista_ativo() {
$this->$linha
if(!empty($linha)) {
// html para exibi os dados
}
Sim, também é possível através das propriedades da classe:
Uma propriedade nada mais é do que uma variável no escopo de um objeto. Se fôssemos nos ater estritamente aos princípios da Orientação a Objetos, você não deveria fazer dessa forma pois uma propriedade descreve uma característica da classe.
Não vou entrar nesse mérito pois o mesmo já foi largamente discutidos no curso incompleto de PHP presente aqui no fórum.
<?php
class MyClass {
private $results = array();
public function getAllUsers() {
// Faz a consulta e, com o array retornado, aqui nomeado $data:
$this -> results = $data;
}
public function getActiveUsers() {
// Faz alguma coisa com $this -> results
}
}
Porém, você tem que ter em mente duas coisas:
Primeiro que se o método MyClass::getAllUsers() não for manualmente invocado pela Aplicação, a proproedade MyClass::results será e terá aquilo que ela foi inicialmente definida, ou seja, um array vazio.
Segundo que tal procedimento está ao nível de escopo do objeto e não escopo da classe.
Na prática isso ignifica que se você por algum motivo usar um objeto para invocar MyClass::getAllUsers() e outro objeto para invocar MyClass::getActiveUsers() a propriedade MyClass::results continuará sendo um array vazio. Ex:
$myClass = new MyClass;
$myClass -> getAllUsers();
var_dump( $myClass -> getActiveUsers() );
Apesar de incoreto, funcionará. Agora:
$myClass = new MyClass;
$myClass -> getAllUsers();
$myClass = new MyClass;
var_dump( $myClass -> getActiveUsers() );
Não irá mais pois mesmo que você tenha usado o mesmo nome de variável foi criada uma nova instânci do objeto MyClass.
Ola boa noite bruno obrigado pela sua atenção
E que eu estou montando uma aplicação usando CAKE PHP e o bicho e todo jogando nesse comportamento
lista quem está ativo
lista quem está desativado
e por ai vai
Deu para entende sua ideia , se tive uma ideia mais inteligente gostaria de conhece para esse caso de uso
Obrigado mais uma vez e tenha uma boa noite
É possível!
Simplifiquei pra você, veja se você entende:
OBS.: Mudei o nome da função lista ativo pra lista_ativo, pois dá erro assim.
/ Code / }else{ / Code / }}