Ir para conteúdo
Fórum Script Brasil
  • 0

Erro Array and string offset access syntax with curly braces is no longer supported


Walan Christian

Pergunta

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

  • 0
<?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 por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...