Jump to content
Fórum Script Brasil
  • 0

É possível criar objetos literais no php?


iNosuKe 么

Question

A resposta para essa pergunta é: SIM

O conceito de object literal (objeto literal) é muito famoso no JS e consiste em criar um objeto que possui propriedades e, claro, valores associados a essas propriedades. No exemplo a seguir, poderemos ver como esse recurso funciona no JS:

const programador = {
   nome: "Fábio Akita",
   linguagem: "Ruby"
};

Agora posso consultar, alterar ou até mesmo executar propriedades e métodos desse meu objeto.

Exemplificando a utilização do meu objeto literal:

console.log(`Olá, ${programador.nome}`); # saída: Olá, Fábio Akita

Esse recurso é amplamente utilizado no mundo JS. Assista uma instrução switch ser substituída por um object literal:

let day;

switch (new Date().getDay()) {
  case 0:
    day = "Sunday";
    break;
  case 1:
    day = "Monday";
    break;
  case 2:
    day = "Tuesday";
    break;
  case 3:
    day = "Wednesday";
    break;
  case 4:
    day = "Thursday";
    break;
  case 5:
    day = "Friday";
    break;
  case 6:
    day = "Saturday";
    break;
  default:
    throw new Error("Hey! We have only 7 days in the week");
}

console.log(`What day of the week is today? ${day}`);

Substituindo por um object literal

const dayOfTheWeek = {
  0: "Sunday",
  1: "Monday",
  2: "Tuesday",
  3: "Wednesday",
  4: "Thursday",
  5: "Friday",
  6: "Saturday",
};

console.log(
  `What day of the week is today? ${dayOfTheWeek[new Date().getDay()]}`
);

Legal, né!? Mas daí você me pergunta, como posso replicar isso no php? Bom, o php não possui o recurso de object literal, mas calma, pois podemos alçar o mesmo resultado de duas maneiras:

1° por meio dos arrays associativos.

2° por meio da estrutura condicional match.

1° maneira:

$dayOfTheWeek = [
  0 => "Sunday",
  1 => "Monday",
  2 => "Tuesday",
  3 => "Wednesday",
  4 => "Thursday",
  5 => "Friday",
  6 => "Saturday",
];

$today = date('w'); // Obtém o dia da semana atual (0 para domingo, 1 para segunda, etc.)
echo "What day of the week is today? " . $dayOfTheWeek[$today];

2° maneira:

$today = date('w'); // Obtém o dia da semana atual (0 para domingo, 1 para segunda, etc.)
$todayInt = $today + 0; // no caso do match precisamos informar um int, para que a associação seja feita corretamente

$dayOfTheWeek = match($todayInt) {
  0 => "Sunday",
  1 => "Monday",
  2 => "Tuesday",
  3 => "Wednesday",
  4 => "Thursday",
  5 => "Friday",
  6 => "Saturday",
};

echo "What day of the week is today? " . $dayOfTheWeek;

Bem, esse foi o tutorial, tmjt rapaziada!

Edited by iNosuKe 么
Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 1

Eu não conhecia o objeto literal no JavaScript, testei e funcionou, menos na hora de interpolar os textos.

Hoje eu finalmente descobri como funciona a interpolação. A interpolação no JavaScript só funciona no meu notebook se eu usar aspas craseadas, e a interpolação no PHP só funciona se eu usar aspas duplas, assim:

<script>
    programador = {"nome": "Fábio Akita","linguagem": "Ruby"}
    alert(`Olá, ${programador.nome}`)
</script>
<?php
$programador=json_decode('{"nome":"Fábio Akita","linguagem":"Ruby"}');
echo "Olá, $programador->nome";

Para calcular o dia da semana em português, a minha sugestão é:

<?php
$week=['Mon','Thu','Wed','Tue','Fri','Sat','Sun'];
$semana=['segunda','terça','quarta','quinta','sexta','sábado','domingo'];
echo "hoje é " . $semana[array_search(date("D"),$week)];

 

Edited by Frank K Hosaka
Link to comment
Share on other sites

  • 0

Muito interessante o seu tutorial sobre o conceito de object literal em JavaScript e como replicá-lo em PHP usando arrays associativos ou a estrutura condicional match. É uma ótima maneira de mostrar como os conceitos de uma linguagem podem ser adaptados para outra de forma eficiente.  Compartilhe seu conhecimento em jogar pachinko Tenho certeza de que muitos apreciarão sua abertura e compartilharão algo com você também. Parabéns pela explicação detalhada e pela demonstração prática das soluções em PHP. Certamente será útil para quem está aprendendo ou trabalhando com ambas as linguagens.

Edited by BabylonJa101
Link to comment
Share on other sites

  • 0

Os objetos literais no PHP são úteis para representar dados estruturados de forma simples e acessível. Eles também podem ser facilmente passados como parâmetros de função ou retornados por funções. Você pode saber mais sobre esse assunto em crazy time. É importante lembrar que, apesar da semelhança com as matrizes associativas, os objetos literais no PHP não são iguais aos objetos de classe personalizados, pois não têm métodos ou herança.

Edited by LunarSand33
Link to comment
Share on other sites

  • 0

Durante muito tempo eu usei o json_decode(json_encode($array)) para obter um objeto literal no PHP.

Nessa semana, eu encontrei uma outra forma de obter um objeto no PHP:

<?php
$programador=(object)['nome'=>'Fabio Akita'];
echo "Olá, $programador->nome"; // Olá, Fábio Akita

echo "<p>";

$diaDaSemana=(object)['Sun'=>'domingo','Mon'=>'segunda-feira','Tue'=>'terça-feira',
 'Wed'=>'quarta-feira', 'Thu'=>'quinta-feira', 'Fri'=>'sexta-feira', 'Sat'=>'sábado'];
$day=date("D");
echo "Hoje é " . $diaDaSemana->$day ." (".date('d/m/Y'). ")"; // Hoje é domingo (10/03/2024)

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      651.8k
×
×
  • Create New...