Pessoal, estou estudando o livro PHP Orientado a Objetos do Pablo Dall'Oglio, e cheguei no capítulo sobre Query Object.
Estou em uma parte que se cria uma classe chamada "TCriteria.php", e depois, cria-se uma página para testar essa classe,onde eu crio os objetos nela, essa página chama-se "criteria.php"
O problema que está ocorrendo é quando eu executo a página "criteria.php", aparece a seguinte mensagem no browser:
Notice: Undefined variable: operator in C:\wamp\www\php.poo\app.ado\TCriteria.class.php on line 28
Notice: Undefined variable: result in C:\wamp\www\php.poo\app.ado\TCriteria.class.php on line 42
Parece que está dizendo que eu não defini essas variáveis "operator" e "result", só que está igualzinho livro, idêntico.
Abaixo vou postar o código da classe TCriteria e do criteria.php para vocês verem, e peço por favor a ajuda de vocês, preciso de uma solução para este problema pois parei nesta parte já fazem dois dias.
Em negrito são as partes do código que está dando erro
TCriteria.class.php
<?php
/*
classe TCriteria
esta classe provê uma interface utilizada para definição de critérios
*/
class TCriteria {
private $expressions; // armazena as expressões
private $operators; // armazena a lista de operadores
Question
Plábyo Rainer Gianniany
Olá pessoal, bom dia.
Pessoal, estou estudando o livro PHP Orientado a Objetos do Pablo Dall'Oglio, e cheguei no capítulo sobre Query Object.
Estou em uma parte que se cria uma classe chamada "TCriteria.php", e depois, cria-se uma página para testar essa classe,onde eu crio os objetos nela, essa página chama-se "criteria.php"
O problema que está ocorrendo é quando eu executo a página "criteria.php", aparece a seguinte mensagem no browser:
Notice: Undefined variable: operator in C:\wamp\www\php.poo\app.ado\TCriteria.class.php on line 28
Notice: Undefined variable: result in C:\wamp\www\php.poo\app.ado\TCriteria.class.php on line 42
Parece que está dizendo que eu não defini essas variáveis "operator" e "result", só que está igualzinho livro, idêntico.
Abaixo vou postar o código da classe TCriteria e do criteria.php para vocês verem, e peço por favor a ajuda de vocês, preciso de uma solução para este problema pois parei nesta parte já fazem dois dias.
Em negrito são as partes do código que está dando erro
TCriteria.class.php
<?php
/*
classe TCriteria
esta classe provê uma interface utilizada para definição de critérios
*/
class TCriteria {
private $expressions; // armazena as expressões
private $operators; // armazena a lista de operadores
private $properties; // propriedades do critério
/*
método add()
adiciona uma expressão ao critério
@param $expression = expressão (objeto TExpression)
@param $operator = operador lógico de comparação
*/
public function add(TExpression $expression, $operator = self::AND_OPERATOR) {
// na primeira vez, não precisamos de operador lógico para concatenar
// o comando empty verifica/informa se a variável está vazia
if(empty($this->expressions)) {
// o comando unset destrói a variável
unset($operator);
}
// agrega o resultado da expressão à lista de expressões
$this->expressions[]=$expression;
$this->operators[]=$operator;
}
/*
método dump()
retorna a expressão final
*/
public function dump() {
// concatena a lista de expressões
if(is_array($this->expressions)) {
foreach($this->expressions as $i=> $expression) {
$operator = $this->operators[$i];
// concatena o operador com a respectiva expressão
$result .= $operator. $expression->dump() . ' ';
}
// o comando trim retina espaço no início e final de uma string
$result = trim($result);
return "({$result})";
}
}
/*
método setProperty
define o valor de uma propriedade
@param $property = propriedade
@param $value = valor
*/
public function setProperty() {
$this->properties[$property] = $value;
}
/*
método getProperty
retorna o valor de uma propriedade
@param $property = propriedade
*/
public function getProperty($property) {
return $this->properties[$property];
}
}
?>
criteria.php
<?php
// carrega as classes necessárias
include_once 'app.ado\TExpression.class.php';
include_once 'app.ado\TCriteria.class.php';
include_once 'app.ado\TFilter.class.php';
/*
aqui vemos um exemplo de critério utilizando o operador OR
a idade deve ser menor que 16 ou maior que 60
*/
$criterio = new TCriteria;
$criterio->add(new TFilter('idade', '<', 16), TExpression::OR_OPERATOR);
$criterio->add(new TFilter('idade', '>', 60), TExpression::OR_OPERATOR);
echo $criterio->dump();
?>
Desde já agradeço, valeu.
Link to comment
Share on other sites
3 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.