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

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

PHP 8.2 માં મુખ્ય સુધારાઓ:

  • વર્ગને ફક્ત વાંચવા માટે ચિહ્નિત કરવાની ક્ષમતા ઉમેરી. આવા વર્ગોમાં પ્રોપર્ટીઝ માત્ર એક જ વાર સેટ કરી શકાય છે, તે પછી તેઓ ફેરફાર માટે ઉપલબ્ધ રહેશે નહીં. પહેલાં, વ્યક્તિગત વર્ગ ગુણધર્મોને ફક્ત વાંચવા માટે ચિહ્નિત કરી શકાય છે, પરંતુ હવે તમે એક જ સમયે તમામ વર્ગ ગુણધર્મો માટે આ મોડ ચાલુ કરી શકો છો. વર્ગ સ્તરે "માત્ર વાંચવા માટે" ધ્વજનો ઉલ્લેખ કરવાથી વર્ગમાં ગુણધર્મોના ગતિશીલ ઉમેરણને પણ અવરોધે છે. ફક્ત વાંચવા માટેના વર્ગની પોસ્ટ { પબ્લિક ફંક્શન __કન્સ્ટ્રક્ટ( જાહેર શબ્દમાળા $title, જાહેર લેખક $author, ) {} } $post = નવી પોસ્ટ(/* … */); $post->અજ્ઞાત = 'ખોટું'; // ભૂલ: ડાયનેમિક પ્રોપર્ટી બનાવી શકાતી નથી પોસ્ટ::$અજ્ઞાત
  • "સાચા", "ખોટા" અને "નલ" પ્રકારો ઉમેરવામાં આવ્યા છે, જે ફક્ત એક જ માન્ય મૂલ્ય લઈ શકે છે અને તેનો ઉપયોગ થાય છે, ઉદાહરણ તરીકે, ભૂલ સમાપ્તિ ફ્લેગ અથવા ખાલી મૂલ્ય સાથે ફંક્શન પરત કરવા માટે. પહેલાં, “true”, “false” અને “null” નો ઉપયોગ અન્ય પ્રકારો સાથે જ થઈ શકતો હતો (ઉદાહરણ તરીકે, “string|false”), પરંતુ હવે તેનો અલગથી ઉપયોગ કરી શકાય છે: function alwaysFalse(): false { return false ; }
  • ભૂલના સમયે સ્ટેક ટ્રેસ આઉટપુટમાં સંવેદનશીલ સેટિંગ્સને ફિલ્ટર કરવાની ક્ષમતા પ્રદાન કરી. જ્યારે થતી ભૂલો વિશેની માહિતી આપમેળે તૃતીય-પક્ષ સેવાઓને મોકલવામાં આવે છે જે સમસ્યાઓને ટ્રૅક કરે છે અને વિકાસકર્તાઓને તેમના વિશે જાણ કરે છે ત્યારે ચોક્કસ માહિતી કાપવાની જરૂર પડી શકે છે. ઉદાહરણ તરીકે, તમે ટ્રેસમાંથી પેરામીટર્સને બાકાત કરી શકો છો જેમાં યુઝરનામ, પાસવર્ડ અને એન્વાયર્નમેન્ટ વેરિએબલનો સમાવેશ થાય છે. ફંક્શન ટેસ્ટ ($foo, #[\SensitiveParameter] $password, $baz ) { થ્રો ન્યૂ એક્સેપ્શન('Error'); } ટેસ્ટ('foo', 'પાસવર્ડ', 'baz'); જીવલેણ ભૂલ: ન પકડાયેલ અપવાદ: test.php માં ભૂલ:8 સ્ટેક ટ્રેસ: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} test.php માં ફેંકવામાં આવ્યું ઑનલાઇન 8
  • લક્ષણોમાં સ્થિરાંકો વ્યાખ્યાયિત કરવાની મંજૂરી (લક્ષણ, કોડનો ફરીથી ઉપયોગ કરવા માટેની પદ્ધતિ). લક્ષણમાં વ્યાખ્યાયિત સ્થિરાંકો વર્ગ દ્વારા ઍક્સેસ કરી શકાય છે જે લક્ષણનો ઉપયોગ કરે છે (પરંતુ લક્ષણ નામ દ્વારા નહીં). લક્ષણ ફૂ { જાહેર const CONSTANT = 1; પબ્લિક ફંક્શન બાર(): int { રિટર્ન સેલ્ફ::CONSTANT; // જીવલેણ ભૂલ } } વર્ગ બાર { Foo નો ઉપયોગ કરો; } var_dump(બાર::CONSTANT); // 1
  • ડિસજંકટીવ નોર્મલ ફોર્મ (DNF, ડિસજંકટીવ નોર્મલ ફોર્મ) માં પ્રકારોને સ્પષ્ટ કરવાની ક્ષમતા ઉમેરવામાં આવી છે, જે તમને પ્રકારોના યુનિયન (બે અથવા વધુ પ્રકારોના સંગ્રહ) અને પ્રકારોના આંતરછેદને જોડવાની મંજૂરી આપે છે (જેના મૂલ્યો ઘણા હેઠળ આવે છે. વારાફરતી પ્રકારો). વર્ગ Foo { પબ્લિક ફંક્શન બાર((A&B)|null $entity) { જો ($entity === null) { રીટર્ન નલ; } પરત $entity; } }
  • સ્યુડો-રેન્ડમ નંબર્સ અને સિક્વન્સ જનરેટ કરવા માટે ફંક્શન્સ અને ક્લાસ સાથે એક નવું એક્સટેન્શન “રેન્ડમ” પ્રસ્તાવિત કરવામાં આવ્યું છે. મોડ્યુલ ઑબ્જેક્ટ-ઓરિએન્ટેડ ઈન્ટરફેસ પૂરું પાડે છે, તમને સ્યુડો-રેન્ડમ નંબરો બનાવવા માટે અલગ-અલગ એન્જિન પસંદ કરવાની મંજૂરી આપે છે, જેમાં સંકેતલિપીમાં ઉપયોગ માટે યોગ્ય હોય તે સહિત, અને સહાયક કાર્યો પૂરા પાડે છે, ઉદાહરણ તરીકે, રેન્ડમ એરે અને સ્ટ્રિંગ્સને મિશ્રિત કરવા, રેન્ડમ એરે કી પસંદ કરવા, તમારા પોતાના સ્વતંત્ર રાજ્ય સાથે અનેક જનરેટર્સનો એકસાથે ઉપયોગ. $rng = $is_production ? નવું રેન્ડમ\એન્જિન\સિક્યોર(): નવું રેન્ડમ\એન્જિન\Mt19937(1234); $randomizer = નવું રેન્ડમ\Randomizer($rng); $randomizer->shuffleString('foobar');
  • સ્થાનિક-સ્વતંત્ર કેસ રૂપાંતરણ અમલમાં મૂક્યું. strtolower() અને strtoupper() જેવા કાર્યો હવે હંમેશા ASCII શ્રેણીમાં અક્ષરોના કેસને કન્વર્ટ કરે છે, જેમ કે લોકેલને "C" પર સેટ કરતી વખતે.
  • નવા કાર્યો ઉમેર્યા: mysqli_execute_query, curl_upkeep, memory_reset_peak_usage, ini_parse_quantity, libxml_get_external_entity_loader, sodium_crypto_stream_xchacha20_xor_ic, openssl_cipher_key_length.
  • નવી પદ્ધતિઓ ઉમેરી: mysqli::execute_query, ZipArchive::getStreamIndex, ZipArchive::getStreamName, ZipArchive::clearError, ReflectionFunction::isAnonymous, ReflectionMethod::hasPrototype.
  • વર્ગમાં ગતિશીલ રીતે ગુણધર્મો બનાવવાની ક્ષમતાને નાપસંદ કરવામાં આવી છે. PHP 9.0 માં, વર્ગમાં શરૂઆતમાં વ્યાખ્યાયિત ન હોય તેવા ગુણધર્મોને ઍક્સેસ કરવાથી ભૂલ (ErrorException) થશે. વર્ગો કે જે પ્રોપર્ટીઝ બનાવવા માટે __get અને __set પદ્ધતિઓ પ્રદાન કરે છે, અથવા stdClass માં ગતિશીલ ગુણધર્મો ફેરફારો વિના કામ કરવાનું ચાલુ રાખશે, વિકાસકર્તાને છુપાયેલા બગ્સથી બચાવવા માટે અવિદ્યમાન ગુણધર્મો સાથે માત્ર ગર્ભિત કાર્યને સમર્થન આપવામાં આવશે. જૂના કોડના કાર્યને સાચવવા માટે, "#[AllowDynamicProperties]" વિશેષતા પ્રસ્તાવિત છે, જે ગતિશીલ ગુણધર્મોના ઉપયોગને મંજૂરી આપે છે.
  • "${var}" અને ${(var)}" અભિવ્યક્તિઓનો ઉપયોગ કરીને વેરિયેબલ મૂલ્યોને શબ્દમાળાઓમાં બદલવાની ક્ષમતાને નાપસંદ કરવામાં આવી છે. સામાન્ય રીતે ઉપયોગમાં લેવાતા "{$var}" અને "$var" અવેજી માટે સમર્થન જાળવી રાખવામાં આવ્યું છે. ઉદાહરણ તરીકે: "હેલો {$world}"; ઓકે "હેલો $world"; ઓકે "હેલો ${world}"; નાપસંદ: શબ્દમાળાઓમાં ${} નો ઉપયોગ નાપસંદ કરવામાં આવ્યો છે
  • આંશિક રીતે સપોર્ટેડ કૉલેબલ્સ કે જેને "call_user_func($callable)" દ્વારા કૉલ કરી શકાય છે તે નાપસંદ કરવામાં આવ્યા છે, પરંતુ "$callable()": "self::method" "parent::method" "સ્થિર :: સ્વરૂપમાં કૉલિંગને સપોર્ટ કરતા નથી. પદ્ધતિ" ["સ્વ", "પદ્ધતિ"] ["માતાપિતા", "પદ્ધતિ"] ["સ્થિર", "પદ્ધતિ"] ["ફૂ", "બાર::પદ્ધતિ"] [નવી ફૂ, "બાર: : પદ્ધતિ" "]
  • error_log_mode ડાયરેક્ટિવ સેટિંગ્સમાં ઉમેરવામાં આવ્યું છે, જે તમને એરર લોગમાં એક્સેસ મોડ નક્કી કરવાની મંજૂરી આપે છે.

સોર્સ: opennet.ru

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