PHP 8.3 પ્રોગ્રામિંગ ભાષાનું પ્રકાશન

વિકાસના એક વર્ષ પછી, PHP 8.3 પ્રોગ્રામિંગ ભાષાનું પ્રકાશન રજૂ કરવામાં આવ્યું. નવી શાખામાં નવી સુવિધાઓની શ્રેણી, તેમજ સુસંગતતાને તોડતા ઘણા ફેરફારોનો સમાવેશ થાય છે.

PHP 8.3 માં મુખ્ય ફેરફારો:

  • વર્ગ ક્લોનિંગ દરમિયાન, "ઓન્લી રીડન" એટ્રિબ્યુટ વડે પ્રોપર્ટીઝને ફરી શરૂ કરવાનું શક્ય છે. ફક્ત "__ક્લોન" ફંક્શનની અંદર જ વાંચવા માટેના ગુણધર્મોને ઓવરરાઇડ કરવાની મંજૂરી છે: ફક્ત વાંચવા માટેનો વર્ગ પોસ્ટ { પબ્લિક ફંક્શન __કન્સ્ટ્રક્ટ ( પબ્લિક ડેટ ટાઇમ $createdAt, ) {} પબ્લિક ફંક્શન __clone() { $this->createdAt = new DateTime(); // "createdAt" ગુણધર્મ ફક્ત વાંચવા માટે હોવા છતાં પણ મંજૂરી છે. } }
  • વર્ગો, લક્ષણો અને ગણતરીઓમાં પ્રકાર સંકેત સાથે સ્થિરાંકોનો ઉપયોગ કરવાની ક્ષમતા પ્રદાન કરવામાં આવી છે: વર્ગ Foo { const string BAR = 'baz'; }
  • "#[ઓવરરાઇડ]" એટ્રિબ્યુટ માટે ઉમેરાયેલ સમર્થન, જેની સાથે ડેવલપર દુભાષિયાને જાણ કરી શકે છે કે ચિહ્નિત પદ્ધતિ કેટલીક મૂળ પદ્ધતિને ઓવરરાઇડ કરે છે. જો ત્યાં કોઈ ઓવરરાઇડ નથી, તો દુભાષિયા એક ભૂલ પ્રદર્શિત કરશે.
  • એરે ઇન્ડેક્સ તરીકે નકારાત્મક મૂલ્યોનું હેન્ડલિંગ બદલ્યું. ઉદાહરણ તરીકે, જ્યારે ખાલી એરેમાં નંબર “-5” સાથેનું એલિમેન્ટ ઉમેરતા હોય અને બીજું એલિમેન્ટ ઉમેરતા હોય, ત્યારે અગાઉ બીજું એલિમેન્ટ ઇન્ડેક્સ “0” સાથે સાચવવામાં આવતું હતું, પરંતુ PHP 8.3 વર્ઝનથી શરૂ કરીને તે ઇન્ડેક્સ “-4” સાથે સાચવવામાં આવશે. . $array = []; $array[-5] = 'a'; $array[] = 'b'; var_export($array); // એરે હતો (-5 => 'a', 0 => 'b') // એરે બન્યો (-5 => 'a', -4 => 'b')
  • ફક્ત-વાંચવા માટેના મોડમાં અનામી વર્ગો બનાવવાની ક્ષમતા ઉમેરાઈ: $class = new readonly class { public function __construct( public string $foo = 'bar', ) {} };
  • ડીકોડિંગ કામગીરી કર્યા વિના સ્ટ્રિંગ JSON ફોર્મેટમાં છે કે કેમ તે ઝડપથી તપાસવા માટે json_validate() ફંક્શન ઉમેર્યું. json_validate(સ્ટ્રિંગ $json, int $depth = 512, int $flags = 0): bool
  • રેન્ડમાઇઝર ક્લાસમાં નવી પદ્ધતિઓ ઉમેરવામાં આવી છે, જે સ્યુડો-રેન્ડમ નંબર્સ અને સિક્વન્સ જનરેટ કરવા માટે ઉચ્ચ-સ્તરની API પ્રદાન કરે છે: આપેલ કદની સ્ટ્રિંગ બનાવવા માટે getBytesFromString, અન્ય સ્ટ્રિંગમાં હાજર અક્ષરોનો રેન્ડમ ક્રમમાં ઉપયોગ કરીને; રેન્ડમ ફ્લોટિંગ પોઈન્ટ નંબર જનરેટ કરવા માટે getFloat અને NextFloat જે ઉલ્લેખિત રેન્જમાં આવે છે.
  • ગતિશીલ વર્ગ વાક્યરચનાનો ઉપયોગ કરીને સ્થિરાંકો પુનઃપ્રાપ્ત કરવાની ક્ષમતા ઉમેરી: વર્ગ Foo { const BAR = 'bar'; } $name = 'BAR'; // અગાઉ, BAR કોન્સ્ટન્ટને પુનઃપ્રાપ્ત કરવા માટે, તમારે constant(Foo::class. '::' . $name); // હવે ફક્ત Foo::{$name};
  • તારીખો અને સમય સાથે કામ કરતી કામગીરીમાં ઊભી થતી સમસ્યાઓના કિસ્સામાં વ્યક્તિગત અપવાદો (DateMalformedIntervalStringException, DateInvalidOperationException, DateRangeError) ની પેઢી ઉમેરવામાં આવી છે.
  • unserialize() ફંક્શનમાં સીરીયલાઇઝ્ડ ડેટાના પાર્સિંગ દરમિયાન થતી ભૂલોનું સુધારેલ હેન્ડલિંગ. સમસ્યાઓના કિસ્સામાં, unserialize() હવે E_NOTICE ને બદલે E_WARNING જારી કરે છે.
  • શ્રેણી() કાર્યમાં ફેરફારો કરવામાં આવ્યા છે. જ્યારે શ્રેણીની સીમાઓને વ્યાખ્યાયિત કરતા ચલોમાં ઑબ્જેક્ટ, સંસાધનો અથવા એરેને પસાર કરવાનો પ્રયાસ કરવામાં આવે ત્યારે અપવાદ ઉત્પન્ન થાય છે, તેમજ જ્યારે $step પેરામીટરમાં નકારાત્મક મૂલ્ય અથવા કોઈપણ પરિમાણમાં અવ્યાખ્યાયિત મૂલ્યનો ઉલ્લેખ કરવામાં આવે છે. અક્ષરોની સૂચિ હવે આઉટપુટ થઈ શકે છે જ્યારે સંખ્યાઓને બદલે શબ્દમાળાઓનો ઉલ્લેખ કરવામાં આવે છે (ઉદાહરણ તરીકે, "રેન્જ('5', 'z')").
  • સ્થિર ગુણધર્મો સાથેના લક્ષણોની વર્તણૂક બદલાઈ, જે હવે પિતૃ વર્ગમાંથી વારસામાં મળેલી સ્થિર ગુણધર્મોને ઓવરરાઈડ કરે છે.
  • સ્ટેક ઓવરફ્લો સુરક્ષા માટે ઉમેરાયેલ સેટિંગ્સ. zend.max_allowed_stack_size અને zend.reserved_stack_size નિર્દેશો ini ફાઇલમાં ઉમેરવામાં આવ્યા છે, મહત્તમ માન્ય અને અનામત સ્ટેક કદને વ્યાખ્યાયિત કરે છે. zend.max_allowed_stack_size અને zend.reserved_stack_size (સેગ્મેન્ટેશન ફોલ્ટ થાય તે પહેલાં એક્ઝેક્યુશન બંધ થઈ જશે) વચ્ચેના તફાવત કરતાં જ્યારે સ્ટેક ભરાઈ જશે ત્યારે સ્ટેક એક્ઝોશનની નજીક પહોંચતી વખતે પ્રોગ્રામ ક્રેશ થઈ જશે. ડિફૉલ્ટ રૂપે, zend.max_allowed_stack_size મૂલ્ય 0 પર સેટ છે (0—સાઇઝ આપમેળે નક્કી થાય છે; મર્યાદાને અક્ષમ કરવા માટે, તમે તેને -1 પર સેટ કરી શકો છો).
  • નવા POSIX વિધેયો posix_sysconf(), posix_pathconf(), posix_fpathconf() અને posix_eaccess() ઉમેર્યા.
  • mb_str_pad ફંક્શન ઉમેરવામાં આવ્યું છે, જે str_pad() સ્ટ્રિંગ ફંક્શનનું એનાલોગ છે, જે UTF-8 જેવા મલ્ટિ-બાઈટ એન્કોડિંગ્સ સાથે કામ કરવા માટે રચાયેલ છે.
  • તમને પદ્ધતિઓમાંથી બંધ બનાવવા અને તે બંધ કરવા માટે નામવાળી દલીલો પસાર કરવાની મંજૂરી આપે છે. $test = નવી ટેસ્ટ(); $ક્લોઝર = $ટેસ્ટ->મેજિક(…); $closure(a: 'hello', b: 'world');
  • ઇન્ટરફેસમાં સ્થિરાંકોની દૃશ્યતાને હેન્ડલ કરતી વખતે બદલાયેલ વર્તન. ઈન્ટરફેસ I { public const FOO = 'foo'; } વર્ગ C I { ખાનગી કોન્સ્ટ FOO = 'foo' નો અમલ કરે છે; }
  • array_sum(), array_product(), posix_getrlimit(), gc_status(), class_alias(), mysqli_poll(), array_pad() અને proc_get_status() વિધેયોની ક્ષમતાઓ વિસ્તૃત કરવામાં આવી છે.
  • નકારાત્મક $widths મૂલ્યને mb_strimwidth() પર પસાર કરવાની ક્ષમતાને નાપસંદ કરવામાં આવી છે. NumberFormatter::TYPE_CURRENCY સ્થિરાંક દૂર કરવામાં આવ્યો છે. $host અને $port બે પરિમાણો સાથે ldap_connect() ફંક્શનને કૉલ કરવા માટેનો આધાર બંધ કરવામાં આવ્યો છે. opcache.consistency_checks સેટિંગ દૂર કરવામાં આવી છે.

સોર્સ: opennet.ru

એક ટિપ્પણી ઉમેરો