Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sens użycia dynamicznych właściwości klasy
Forum PHP.pl > Forum > PHP
sazian
Przeglądają bibliotekę od sms api trafiłem na taką klasę
https://github.com/smsapi/smsapi-php-client...SendSmssBag.php
Uproszczony fragment kodu:
  1. /**
  2.  * @api
  3.  * @property string $from
  4.  * @property string $message
  5. .....
  6.  * @property string $timeRestriction
  7.  */
  8. #[\AllowDynamicProperties]
  9. class SendSmssBag
  10. {
  11. /** @var string */
  12. public $encoding = 'utf-8';
  13.  
  14. public static function withMessage(array $receivers, string $message): self
  15. {
  16. $bag = new self();
  17. $bag->to = $receivers;
  18. $bag->message = $message;
  19.  
  20. return $bag;
  21. }
  22.  
  23. }
  24.  

I tak się zastanawiam jaki jest tu sens użycia AllowDynamicProperties i "definiowanie" właściwości w @property?
Przecież skoro lista tych właściwości jest znana to było można je zdefiniować tak jak to zrobili z $encoding.

Czy w tym jest jakiś geniusz którego ja nie dostrzegam? Jakiś wzorzec którego nie znam / nie rozumiem?

Macie pomysł "po co tak robić"?
nospor
Dynamiczne wlasciwosci sa deprecated od php8.2
Wiec to pewnie jakis stary kod, ktory przeniesli na php8 wiec musieli dodac tag AllowDynamicProperties by sie nie wykrzaczal
https://www.php.net/manual/en/class.allowdy...cproperties.php

oczywiscie mogli to poprawic porzadnie, no ale po co wink.gif

edit:
O prosze, nawet jeden commit sprzed dwoch lat mowi dokladnie to co ja wlasnie powiedzialem
"Fixes dynamic property deprecations"
biggrin.gif

Tu masz wszystkie zmiany z tego nieszczesnego commita
https://github.com/smsapi/smsapi-php-client...a4d152a811d4e11
poszli po najmniejszej linii oprou i poprostu pododawali wszedzie #[\AllowDynamicProperties]
sazian
A już myślałem że coś genialnego, a nie przykrywanie g... papierkiem...

Tylko to jeszcze bardziej zastanawiające po co, poprawienie tego zajęło by jakieś 10 sekund.

Cóż czyli jednak lepiej nie szukać przejawów geniuszu na siłę ;p
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.