PHP 8.2 ਦੀ ਅਲਫ਼ਾ ਟੈਸਟਿੰਗ ਸ਼ੁਰੂ ਹੋ ਗਈ ਹੈ

PHP 8.2 ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ ਦੀ ਨਵੀਂ ਸ਼ਾਖਾ ਦਾ ਪਹਿਲਾ ਅਲਫ਼ਾ ਰੀਲੀਜ਼ ਪੇਸ਼ ਕੀਤਾ ਗਿਆ ਹੈ। ਰਿਲੀਜ਼ 24 ਨਵੰਬਰ ਨੂੰ ਹੋਣ ਵਾਲੀ ਹੈ। PHP 8.2 ਵਿੱਚ ਜਾਂਚ ਲਈ ਪਹਿਲਾਂ ਤੋਂ ਹੀ ਉਪਲਬਧ ਮੁੱਖ ਨਵੀਨਤਾਵਾਂ ਜਾਂ ਲਾਗੂ ਕਰਨ ਲਈ ਯੋਜਨਾਬੱਧ:

  • "ਗਲਤ" ਅਤੇ "ਨੱਲ" ਵੱਖਰੀਆਂ ਕਿਸਮਾਂ ਜੋੜੀਆਂ ਗਈਆਂ, ਜੋ ਕਿ ਵਰਤੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ, ਉਦਾਹਰਨ ਲਈ, ਇੱਕ ਫੰਕਸ਼ਨ ਲਈ ਇੱਕ ਗਲਤੀ ਸਮਾਪਤੀ ਫਲੈਗ ਜਾਂ ਇੱਕ ਖਾਲੀ ਮੁੱਲ ਵਾਪਸ ਕਰਨ ਲਈ। ਪਹਿਲਾਂ, “false” ਅਤੇ “null” ਨੂੰ ਸਿਰਫ਼ ਹੋਰ ਕਿਸਮਾਂ (ਉਦਾਹਰਨ ਲਈ, “string|false”) ਨਾਲ ਜੋੜ ਕੇ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਸੀ, ਪਰ ਹੁਣ ਉਹਨਾਂ ਨੂੰ ਵੱਖਰੇ ਤੌਰ 'ਤੇ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ: function alwaysFalse(): false { return false; }
  • ਇੱਕ ਕਲਾਸ ਨੂੰ ਸਿਰਫ਼-ਪੜ੍ਹਨ ਲਈ ਚਿੰਨ੍ਹਿਤ ਕਰਨ ਦੀ ਯੋਗਤਾ ਸ਼ਾਮਲ ਕੀਤੀ ਗਈ। ਅਜਿਹੀਆਂ ਕਲਾਸਾਂ ਵਿੱਚ ਵਿਸ਼ੇਸ਼ਤਾ ਸਿਰਫ਼ ਇੱਕ ਵਾਰ ਸੈੱਟ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ, ਜਿਸ ਤੋਂ ਬਾਅਦ ਉਹਨਾਂ ਨੂੰ ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ। ਪਹਿਲਾਂ, ਵਿਅਕਤੀਗਤ ਕਲਾਸ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਸਿਰਫ਼-ਪੜ੍ਹਨ ਲਈ ਚਿੰਨ੍ਹਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਸੀ, ਪਰ ਹੁਣ ਤੁਸੀਂ ਇੱਕ ਵਾਰ ਵਿੱਚ ਸਾਰੀਆਂ ਕਲਾਸ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਲਈ ਇਸ ਮੋਡ ਨੂੰ ਸਮਰੱਥ ਕਰ ਸਕਦੇ ਹੋ। ਕਲਾਸ ਪੱਧਰ 'ਤੇ "ਪੜ੍ਹਨ ਲਈ ਸਿਰਫ਼" ਫਲੈਗ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਨਾ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਕਲਾਸ ਵਿੱਚ ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਸ਼ਾਮਲ ਕੀਤੇ ਜਾਣ ਤੋਂ ਵੀ ਰੋਕਦਾ ਹੈ। ਰੀਡਓਨਲੀ ਕਲਾਸ ਪੋਸਟ { ਪਬਲਿਕ ਫੰਕਸ਼ਨ __ ਕੰਸਟਰੱਕਟ ( ਜਨਤਕ ਸਤਰ $ ਸਿਰਲੇਖ, ਜਨਤਕ ਲੇਖਕ $ ਲੇਖਕ, ) {} } $ ਪੋਸਟ = ਨਵੀਂ ਪੋਸਟ(/* … */); $post->ਅਣਜਾਣ = 'ਗਲਤ'; // ਤਰੁੱਟੀ: ਡਾਇਨਾਮਿਕ ਸੰਪੱਤੀ ਨਹੀਂ ਬਣਾਈ ਜਾ ਸਕਦੀ ਪੋਸਟ::$ਅਣਜਾਣ
  • ਇੱਕ ਕਲਾਸ ਵਿੱਚ ਗੁਣਾਂ ਨੂੰ ਗਤੀਸ਼ੀਲ ਰੂਪ ਵਿੱਚ ਬਣਾਉਣ ਦੀ ਯੋਗਤਾ (ਜਿਵੇਂ ਕਿ ਉੱਪਰ ਦਿੱਤੀ ਉਦਾਹਰਨ ਵਿੱਚ "ਪੋਸਟ->ਅਣਜਾਣ") ਨੂੰ ਬਰਤਰਫ਼ ਕੀਤਾ ਗਿਆ ਹੈ। PHP 9.0 ਵਿੱਚ, ਉਹਨਾਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਐਕਸੈਸ ਕਰਨਾ ਜੋ ਸ਼ੁਰੂ ਵਿੱਚ ਕਲਾਸ ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਨਹੀਂ ਹਨ, ਇੱਕ ਗਲਤੀ (ErrorException) ਦਾ ਨਤੀਜਾ ਹੋਵੇਗਾ। ਉਹ ਕਲਾਸਾਂ ਜੋ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਬਣਾਉਣ ਲਈ __get ਅਤੇ __set ਢੰਗ ਪ੍ਰਦਾਨ ਕਰਦੀਆਂ ਹਨ, ਜਾਂ stdClass ਵਿੱਚ ਗਤੀਸ਼ੀਲ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਬਦਲਾਵਾਂ ਦੇ ਬਿਨਾਂ ਕੰਮ ਕਰਦੀਆਂ ਰਹਿਣਗੀਆਂ, ਸਿਰਫ ਗੈਰ-ਮੌਜੂਦ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਵਾਲੇ ਅਪ੍ਰਤੱਖ ਕੰਮ ਨੂੰ ਲੁਕਵੇਂ ਬੱਗਾਂ ਤੋਂ ਬਚਾਉਣ ਲਈ ਸਮਰਥਿਤ ਕੀਤਾ ਜਾਵੇਗਾ। ਪੁਰਾਣੇ ਕੋਡ ਦੇ ਕੰਮ ਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਣ ਲਈ, "#[AllowDynamicProperties]" ਵਿਸ਼ੇਸ਼ਤਾ ਪ੍ਰਸਤਾਵਿਤ ਹੈ, ਜਿਸ ਨਾਲ ਗਤੀਸ਼ੀਲ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ।
  • ਇੱਕ ਗਲਤੀ ਦੇ ਦੌਰਾਨ ਸਟੈਕ ਟਰੇਸ ਆਉਟਪੁੱਟ ਵਿੱਚ ਸੰਵੇਦਨਸ਼ੀਲ ਮਾਪਦੰਡਾਂ ਨੂੰ ਫਿਲਟਰ ਕਰਨ ਦੀ ਸਮਰੱਥਾ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਕੁਝ ਖਾਸ ਜਾਣਕਾਰੀ ਨੂੰ ਕੱਟਣਾ ਜ਼ਰੂਰੀ ਹੋ ਸਕਦਾ ਹੈ ਜਦੋਂ ਵਾਪਰਨ ਵਾਲੀਆਂ ਗਲਤੀਆਂ ਬਾਰੇ ਜਾਣਕਾਰੀ ਆਪਣੇ ਆਪ ਤੀਜੀ-ਧਿਰ ਦੀਆਂ ਸੇਵਾਵਾਂ ਨੂੰ ਭੇਜੀ ਜਾਂਦੀ ਹੈ ਜੋ ਸਮੱਸਿਆਵਾਂ ਨੂੰ ਟਰੈਕ ਕਰਦੀਆਂ ਹਨ ਅਤੇ ਉਹਨਾਂ ਬਾਰੇ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਸੂਚਿਤ ਕਰਦੀਆਂ ਹਨ। ਉਦਾਹਰਨ ਲਈ, ਤੁਸੀਂ ਉਹਨਾਂ ਪੈਰਾਮੀਟਰਾਂ ਨੂੰ ਬਾਹਰ ਕਰ ਸਕਦੇ ਹੋ ਜਿਸ ਵਿੱਚ ਉਪਭੋਗਤਾ ਨਾਮ, ਪਾਸਵਰਡ ਅਤੇ ਵਾਤਾਵਰਣ ਵੇਰੀਏਬਲ ਨੂੰ ਟਰੇਸਿੰਗ ਤੋਂ ਸ਼ਾਮਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਫੰਕਸ਼ਨ ਟੈਸਟ ($foo, #[\SensitiveParameter] $password, $baz ) { ਥ੍ਰੋ ਨਿਊ ਅਪਵਾਦ('Error'); } ਟੈਸਟ ('foo', 'ਪਾਸਵਰਡ', 'baz'); ਘਾਤਕ ਗਲਤੀ: ਅਣਪਛਾਤੀ ਅਪਵਾਦ: test.php ਵਿੱਚ ਗਲਤੀ: 8 ਸਟੈਕ ਟਰੇਸ: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} test.php ਵਿੱਚ ਸੁੱਟਿਆ ਗਿਆ ਲਾਈਨ 8 'ਤੇ
  • "${var}" ਅਤੇ ${(var)} ਸਮੀਕਰਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵੇਰੀਏਬਲ ਮੁੱਲਾਂ ਨੂੰ ਸਤਰ ਵਿੱਚ ਬਦਲਣ ਦੀ ਯੋਗਤਾ ਨੂੰ ਬਰਤਰਫ਼ ਕੀਤਾ ਗਿਆ ਹੈ। ਆਮ ਤੌਰ 'ਤੇ ਵਰਤੇ ਜਾਣ ਵਾਲੇ "{$var}" ਅਤੇ "$var" ਬਦਲਾਂ ਲਈ ਸਮਰਥਨ ਬਰਕਰਾਰ ਰੱਖਿਆ ਗਿਆ ਹੈ। ਉਦਾਹਰਨ ਲਈ: "ਹੈਲੋ {$world}"; ਠੀਕ ਹੈ "ਹੈਲੋ $world"; ਠੀਕ ਹੈ "ਹੈਲੋ ${world}"; ਨਾਪਸੰਦ: ਸਤਰ ਵਿੱਚ ${} ਦੀ ਵਰਤੋਂ ਬਰਤਰਫ਼ ਕੀਤੀ ਗਈ ਹੈ
  • ਨਾਪਸੰਦ ਅੰਸ਼ਕ ਤੌਰ 'ਤੇ ਸਮਰਥਿਤ ਕਾਲੇਬਲ ਜਿਨ੍ਹਾਂ ਨੂੰ "call_user_func($callable)" ਰਾਹੀਂ ਕਾਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਪਰ "$callable()": "self::method" "parent::method" "static" ::method ਦੇ ਰੂਪ ਵਿੱਚ ਕਾਲਿੰਗ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੇ। " ["ਸਵੈ", "ਵਿਧੀ"] ["ਮਾਤਾ", "ਵਿਧੀ"] ["ਸਥਿਰ", "ਵਿਧੀ"] ["ਫੂ", "ਬਾਰ:: ਵਿਧੀ"] [ਨਵਾਂ ਫੂ, "ਬਾਰ:: ਵਿਧੀ" ]
  • ਲੋਕੇਲ-ਸੁਤੰਤਰ ਕੇਸ ਪਰਿਵਰਤਨ ਨੂੰ ਲਾਗੂ ਕੀਤਾ। strtolower() ਅਤੇ strtoupper() ਵਰਗੇ ਫੰਕਸ਼ਨ ਹੁਣ ਹਮੇਸ਼ਾ ASCII ਰੇਂਜ ਵਿੱਚ ਅੱਖਰਾਂ ਦੇ ਕੇਸ ਨੂੰ ਬਦਲਦੇ ਹਨ ਜਿਵੇਂ ਕਿ "C" ਲੋਕੇਲ ਵਿੱਚ ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਹੈ।

ਸਰੋਤ: opennet.ru

ਇੱਕ ਟਿੱਪਣੀ ਜੋੜੋ