Walan Christian Postado Junho 1, 2023 Denunciar Share Postado Junho 1, 2023 Prezados estou o seguinte erro so titulo e ele e acusado nesta linha <?php namespace Hcode; class Model { private $values = []; public function __call($name,$args){ $method = substr($name, 0,3); $fieldName = substr($name, 3, strlen($name)); switch($method){ case "get": return $this ->values[$fieldName]; break; case "set": $this ->values[$fieldName] = $args[0];; break; } } public function setData($data = array()) { foreach($data as $key => $value){ $this ->set{"set".$key}($value); } } public function getValues() { return $this->values; } } ?> o erro e acusado no seguinte techo " $this ->set{"set".$key}($value);" como declarar de forma corre pois se nessa forma já não e mais suportada ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Frank K Hosaka Postado Junho 1, 2023 Denunciar Share Postado Junho 1, 2023 (editado) <?php namespace Hcode; class Model { private $values = []; public function __call($name,$args){ $method = $name; $fieldName = $args[0]; if(isset($args[1])){$value=$args[1];} switch($method){ case "get": return $this->values[$fieldName]; break; case "set": $this->values[$fieldName]=$value; break;}} public function getValues() { return $this->values;} public function setValues($arg){ $this->values=$arg;}} $teste=new Model(); $teste->setValues(["alpha"=>1,"beta"=>2,"gama"=>3]); var_dump($teste->getValues()); var_dump($teste->get('alpha')); $teste->set('alpha',8); var_dump($teste->getValues()); Eu gostei dessa função do constructor, eu ajeitei tudo na base da tentativa e erro. A minha dificuldade foi o número de parâmetros, o get pede um parâmetro, e o set pede dois parâmetros. Para evitar reclamação, usei a função isset. Quanto à função setData eu tive a mesma mensagem, afirmando que ela não é mais usada desde o PHP 7.4, mas eu creio que a função setValues que publiquei serve para o mesmo propósito. Editado Junho 1, 2023 por Frank K Hosaka Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Walan Christian
Prezados estou o seguinte erro so titulo e ele e acusado nesta linha
<?php
namespace Hcode;
class Model {
private $values = [];
public function __call($name,$args){
$method = substr($name, 0,3);
$fieldName = substr($name, 3, strlen($name));
switch($method){
case "get":
return $this ->values[$fieldName];
break;
case "set":
$this ->values[$fieldName] = $args[0];;
break;
}
}
public function setData($data = array()) {
foreach($data as $key => $value){
$this ->set{"set".$key}($value);
}
}
public function getValues() {
return $this->values;
}
}
?>
o erro e acusado no seguinte techo " $this ->set{"set".$key}($value);" como declarar de forma corre pois se nessa forma já não e mais suportada ?
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.