ささやかな日々記

日々過ごす中で感じたことや培ったことが誰かの役に立てられたらと思うSEの雑記

PHP 7.2.x から PHP 7.3.x への移行の勝手な日本語訳 廃止予定の機能

PHP 7.2.x から PHP 7.3.x への移行の日本語訳がないので勝手に翻訳して備忘録にする。

廃止予定の機能。

まだ使えるけれど近いうちのバージョンアップで廃止する予定のため、ぼちぼち対応してくださいねという機能について。

廃止された場合には後方互換のない変更として記載されるはずです。

https://www.php.net/manual/ja/migration73.deprecated.php

 

PHP Core

Case-Insensitive Constants

大文字と小文字を区別しない定数

The declaration of case-insensitive constants has been deprecated. Passing TRUE as the third argument to define() will now generate a deprecation warning. The use of case-insensitive constants with a case that differs from the declaration is also deprecated.

大文字と小文字を区別しない定数の宣言は廃止されました。 define()の3番目の引数としてTRUEを渡すと、非推奨の警告が生成されます。 宣言とは異なるcaseを使用した、大文字と小文字を区別しない定数の使用も非推奨です。

 

Namespaced assert() 

名前空間付きassert()

Declaring a function called assert() inside a namespace is deprecated. The assert() function is subject to special handling by the engine, which may lead to inconsistent behavior when defining a namespaced function with the same name.

名前空間内でassert()という関数を宣言することは非推奨です。 assert()関数は、エンジンによる特別な処理の対象となります。これは、同じ名前を持つ名前空間付き関数を定義するときの動作に矛盾が生じる可能性があります。

 

Searching Strings for non-string Needle 

 文字列以外のNeedleを文字列で検索する

Passing a non-string needle to string search functions is deprecated. In the future the needle will be interpreted as a string instead of an ASCII codepoint. Depending on the intended behavior, you should either explicitly cast the needle to string or perform an explicit call to chr(). The following functions are affected:

文字列検索関数に非文字列の針を渡すことは非推奨です。 将来的には、針はASCIIコードポイントではなく文字列として解釈されます。 意図した動作に応じて、needleを明示的にstringにキャストするか、明示的にchr()を呼び出してください。 以下の機能が影響を受けます。

  • strpos()
  • strrpos()
  • stripos()
  • strripos()
  • strstr()
  • strchr()
  • strrchr()
  • stristr()

 

Strip-Tags Streaming

Strip-Tags ストリーミング

The fgetss() function and the string.strip_tags stream filter have been deprecated. This also affects the SplFileObject::fgetss() method and gzgetss() function.

fgetss()関数とstring.strip_tagsストリームフィルタは非推奨になりました。これはSplFileObject :: fgetss()メソッドとgzgetss()関数にも影響します。

 

Data Filtering

 データフィルタリング

The explicit usage of the constants FILTER_FLAG_SCHEME_REQUIRED and FILTER_FLAG_HOST_REQUIRED is now deprecated; both are implied for FILTER_VALIDATE_URL anyway.

定数FILTER_FLAG_SCHEME_REQUIREDおよびFILTER_FLAG_HOST_REQUIREDの明示的な使用は現在推奨されていません。とにかく、どちらもFILTER_VALIDATE_URLに暗黙的に含まれています。

 

Image Processing and GD

画像処理とGD

image2wbmp() has been deprecated.

image2wbmp()は推奨されなくなりました。

 

Internationalization Functions

国際化機能

Usage of the Normalizer::NONE form throws a deprecation warning, if PHP is linked with ICU ≥ 56.

PHPICU≧56にリンクされている場合、Normalizer :: NONE形式を使用すると非推奨警告がスローされます。

 

Multibyte String

マルチバイト文字列

The following undocumented mbereg_*() aliases have been deprecated. Use the corresponding mb_ereg_*() variants instead.

次の文書化されていないmbereg _ *()エイリアスは推奨されていません。代わりに対応するmb_ereg _ *()の変種を使用してください。

  • mbregex_encoding()
  • mbereg()
  • mberegi()
  • mbereg_replace()
  • mberegi_replace()
  • mbsplit()
  • mbereg_match()
  • mbereg_search()
  • mbereg_search_pos()
  • mbereg_search_regs()
  • mbereg_search_init()
  • mbereg_search_getregs()
  • mbereg_search_getpos()
  • mbereg_search_setpos()

 

ODBC and DB2 Functions (PDO_ODBC)

ODBCDB2の関数(PDO_ODBC

 

The pdo_odbc.db2_instance_name ini setting has been formally deprecated. It is deprecated in the documentation as of PHP 5.1.1.

pdo_odbc.db2_instance_name ini設定は正式に廃止されました。 PHP 5.1.1以降のドキュメントでは非推奨です。

 

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

気づけばプロ並みPHP 改訂版ーーゼロから作れる人になる! [ 谷藤賢一 ]
価格:2916円(税込、送料無料) (2019/6/16時点)

楽天で購入

 

ホームページ作成サービス「グーペ」

PowerShell 簡易版ホームディレクトリ変更

PowerShellで起動する際、通常の起動ではホームディレクトリは固定です。

※ホームディレクトリは起動時に自分がいるパスを指します。


これを変更するにはいくつか方法があるのですが、設定自体を変更してしまうと当然ですが一律で変更されてしまうため「この作業している間だけ。ここから起動したいなー」なんていうときには、作業が終わったら結局元の設定に戻したりする必要があります。

今回はそんなときに簡単な方法です。

 

やりかたは

PowerShellを起動するのでは無く、PowerShellを起動するPowerShellの実行ファイルをPowerShellで実行する。

です。


ちょっと何言っているかよくわからないですよね、当然です。ごめんなさい。

要はファイル「powershell.ps1」でPowerShellを起動します。
するとファイル「powershell.ps1」のある場所がホームディレクトリになります。

ファイルの中身はこんな感じでStart-ProcessからPowerShellを起動します。

 

■ファイル名:powershell.ps1

Start-Process powershell

 

Start-Processで起動されたPowerShellは、そのコンソールに限り実行したディレクトリパスがホームディレクトリになりますので、このファイルをホームディレクトリにしたい場所に置きます。

 

つまり、いつもどおりプログラムとしてPowerShellを実行した際は、いつもどおりのホームディレクトリで始まります。


ホームディレクトリを変えたい場合だけそのファイルから起動し、別の作業場所にしたかったら、そのファイルを移動するだけで済みます。
そして用済みになったら削除しちゃえばいいのです。

 

ただ、実行がダブルクリックではNGで、右クリックから「PowerShellで実行」を選んでください。。。ダブルクリックではデフォルトでメモ帳が開きます。
レジストリの内容を書き換えてしまえばダブルクリックからPowerShellが起動できるのですが、それは面倒なのでやりません。


検証する環境は以下とします。
「C:\work」の中に「powershell.ps1」とさらに「homeDirectory」の中に「powershell.ps1」があります。

PS C:\work> tree /f
フォルダー パスの一覧: ボリューム Windows
ボリューム シリアル番号は 1E21-A310 です
C:.
powershell.ps1

└─homeDirectory
powershell.ps1

 


まずは通常のPowerShellの起動

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\Users\ユーザ名>

 


ログインしているユーザの直下がホームディレクトリになっています。
次に「C:\work\powershell.ps1」からのPowerShell起動

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\work>

 

ホームディレクトリが実行した「C:\work」になっています。
最後に「C:\work\homeDirectory\powershell.ps1」からのPowerShell起動

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\work\homeDirectory>

 

こちらも起動した場所がホームディレクトリになってますね。

こんな感じで簡単に使い捨てのできるホームディレクトリを指定してPowerShellを起動できます。


ちなみに「powershell」という文字列でpowershellが起動するのは環境変数powershell.exeが起動できるように設定されているからです。
これを環境変数に設定されていない状態でも実行できるような書き方をすると以下のようになります。

 Start-Process C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

 

また、Start-Processのエイリアスは「saps」「start」の2通りが用意されていますので
 start powershell
 saps powershell
なんていう書き方でも同様の処理が行えます。
感覚的に「start powershell」という書き方はまさにpowershellを動かすぞ!という感じがしますね。

 


 

PowerShell 所有者と権限の変更方法

PowerShellでのファイルやフォルダの所有者変更方法と権限の変更方法。

まずLinuxでのコマンドでいうと「所有者変更:chown」「権限変更:chmod」のコマンドに相当するものです。

 【所有者変更】

   Linux:chown

   Windows:takeown

 【権限変更】

   Linux:chmod

   Windows:icacls

 

よく使いそうな使用方法は以下に、それぞれのコマンドのヘルプを後半に載せますのでそちらを参考に。

◎所有者変更

 takeown /s PC名 /u ユーザ名 /f フォルダ名 

 ※「/r」で再帰的な変更の実施

 

◎権限付与

 icacls ファイル・フォルダ名 /grant ユーザ名:権限名

 ※「/t」で再帰的な変更の実施

 

権限名はこれらを指定します。

  • N – アクセス権なし
  • F – フルアクセス権
  • M – 変更アクセス権
  • RX – 読み取りと実行のアクセス権
  • R – 読み取り専用アクセス権
  • W – 書き込み専用アクセス権
  • D – 削除アクセス権

 

 

まずは所有者と権限を確認するファイル構成は以下の状態とします。

PS C:\work> tree /F
フォルダー パスの一覧: ボリューム TIH0111000A
ボリューム シリアル番号は 041E-C592 です
C:.
│ file1.txt

└─dir1
file11.txt

 

そして以下のコマンドで所有者と権限の確認ができます。

PS C:\work> Get-ChildItem . -Recurse | Get-ACL


ディレクトリ: C:\work


Path Owner Access
---- ----- ------
dir1 DESKTOP-R381PJ6\owner[所有者] BUILTIN\Administrators Allow FullControl...[権限]
file1.txt DESKTOP-R381PJ6\owner[所有者] BUILTIN\Administrators Allow FullControl...[権限]


ディレクトリ: C:\work\dir1


Path Owner Access
---- ----- ------
file11.txt DESKTOP-R381PJ6\owner[所有者] BUILTIN\Administrators Allow FullControl...[権限]

 

◎所有者変更:takeown

PS C:\work> takeown /?

TAKEOWN [/S システム [/U ユーザー名 [/P [パスワード]]]]
/F ファイル名 [/A] [/R [/D プロンプト]]

説明:
このツールを使うと、ファイルの所有権を割り当て直して、前回アクセスが拒否
されたファイルへのアクセスを管理者が回復できるようにします。

パラメーター一覧:
/S システム 接続先のリモート システムを指定
します。

/U [ドメイン\]ユーザー コマンドを実行するユーザー
コンテキストを指定します。

/P [パスワード] 指定のユーザー コンテキストのパスワード
を指定します。
省略すると入力が促されます。

/F ファイル名 ファイル名またはディレクトリ名のパターンを
指定します。ワイルドカード "*" を使って
パターンを指定できます。
'共有名\ファイル名' も使用できます。

/A 現在のユーザーではなく、管理者に所有権を
与えます。

/R 再帰: 指定されたディレクトリとすべてのサブ
ディレクトリにあるファイルに対してツールを
実行します。

/D プロンプト ユーザーがディレクトリに対し "フォルダーの一覧"
アクセス許可を持っていない場合、既定の答えが
使用されます。これはサブディレクトリに対し 再帰的(/R) に操作を行っている場合に適用され
ます。有効な値は "Y" (所有権を得る)、および "N" (スキップ) です。

/SKIPSL シンボリック リンクに接続しません。
/R と同時には指定できません。

/? このヘルプを表示します。

注意: 1) /A が指定されていない場合は、ファイルの所有権は現在
ログインしているユーザーに与えられます。

2) "?" や "*" を使った混合パターンはサポートされていません。

3) /D を使うと、確認プロンプトは表示されません。

例:
TAKEOWN /?
TAKEOWN /F lostfile
TAKEOWN /F \\system\share\lostfile /A
TAKEOWN /F directory /R /D N
TAKEOWN /F directory /R /A
TAKEOWN /F *
TAKEOWN /F C:\Windows\System32\acme.exe
TAKEOWN /F %windir%\*.txt
TAKEOWN /S システム /F MyShare\Acme*.doc
TAKEOWN /S システム /U ユーザー /F MyShare\MyBinary.dll
TAKEOWN /S システム /U ドメイン\ユーザー /P パスワード /F share\ファイル名
TAKEOWN /S システム /U ユーザー /P パスワード /F Doc\Report.doc /A
TAKEOWN /S システム /U ユーザー /P パスワード /F Myshare\*
TAKEOWN /S システム /U ユーザー /P パスワード /F Home\Logon /R
TAKEOWN /S システム /U ユーザー /P パスワード /F Myshare\directory /R /A

 

◎権限変更:icacls

PS C:\work> icacls /?

ICACLS <名前> /save <ACL ファイル> [/T] [/C] [/L] [/Q]
名前が一致するすべてのファイルとフォルダーの DACL を <ACL ファイル> に
格納して、後で /restore で指定できるようにします。SACL、所有者、整合性
ラベルは保存されません。

ICACLS <ディレクトリ> [/substitute <旧 SID> <新 SID> [...]] /restore <ACL ファ
イル> [/C] [/L] [/Q]
格納されている DACL を <ディレクトリ> 内のファイルに適用します。

ICACLS <名前> /setowner <ユーザー> [/T] [/C] [/L] [/Q]
すべての一致する名前の所有者を変更します。このオプションでは、所有権の
変更を強制することはできません。所有権を変更するには、takeown.exe
ユーティリティを使用してください。

ICACLS <名前> /findsid <SID> [/T] [/C] [/L] [/Q]
<SID> が明示されている ACL を含むすべての一致する名前を検索します。

ICACLS <名前> /verify [/T] [/C] [/L] [/Q]
ACL が正規の形式ではないか長さが ACE 数と一致しないすべてのファイルを
検索します。

ICACLS <名前> /reset [/T] [/C] [/L] [/Q]
すべての一致するファイルについて、ACL を継承された既定の ACL と置換します。

ICACLS <名前> [/grant[:r] <SID>:perm[...]]
[/deny <SID>:perm [...]]
[/remove[:g|:d]] <SID>[...]] [/T] [/C] [/L] [/Q]
[/setintegritylevel Level:policy[...]]

/grant[:r] <SID>:perm は、指定されたユーザー アクセス権を付与します。
:r を指定すると、以前に付与されたすべての明示的なアクセス許可は新しい
アクセス許可に置き換えられます。
:r を指定しない場合、新しいアクセス許可は以前に付与された明示的な
アクセス許可に追加されます。

/deny <SID>:perm は、指定されたユーザー アクセス権を明示的に拒否します。
指定されたアクセス許可に対応する明示的な拒否 ACE が追加され、明示的な
許可内容に含まれる同じアクセス許可は削除されます。

/remove[:[g|d]] <SID> は、ACL 内にあるすべての <SID> を削除します。
:g を指定すると、その SID に対して許可されたすべての権限を ACL から
削除します。
:d を指定すると、その SID に対して拒否されたすべての権限を ACL から
削除します。

/setintegritylevel [(CI)(OI)] レベルは、すべての一致するファイルに整合性
ACE を追加します。このレベルは次の 1 つとして指定されます。
L[ow]
M[edium]
H[igh]
整合性 ACE の継承オプションは、レベルの前に配置でき、
ディレクトリに対してのみ適用されます。

/inheritance:e|d|r
e - 継承を有効にします。
d - 継承を無効にし、ACE をコピーします。
r - 継承された ACE をすべて削除します。


注意:
<SID> は数値形式またはフレンドリ名形式で指定できます。数値形式の場合は、
SID の始めに * を付けます。

/T は、<名前> で指定されたディレクトリ以下のすべての一致するファイルと
ディレクトリに対してこの処理が実行されることを指定します。

/C は、どのようなファイル エラーが発生してもこの処理が続行されることを
指定します。ただしエラー メッセージは表示されます。

/L は、この処理がターゲットではなくシンボリック リンク自体に対して実行
されることを指定します。

/Q は、icacls が成功のメッセージを抑制することを指定します。

ICACLS は、ACE エントリの正規の順序を維持します:
明示的な拒否内容
明示的な許可内容
継承された拒否内容
継承された許可内容

perm はアクセス許可マスクであり、次の 2 種類の方法で指定できます:
単純な権限を列挙:
N - アクセス権なし
F - フル アクセス権
M - 変更アクセス権
RX - 読み取りと実行のアクセス権
R - 読み取り専用アクセス権
W - 書き込み専用アクセス権
D - 削除アクセス権
特定の権限をコンマ区切りでかっこ内に列挙:
DE - 削除
RC - 読み取り制御
WDAC - DAC の書き込み
WO - 所有者の書き込み
S - 同期
AS - システム セキュリティへのアクセス
MA - 無制限
GR - 一般的な読み取り
GW - 一般的な書き込み
GE - 一般的な実行
GA - 一般的なすべての操作
RD - データの読み取り/ディレクトリの一覧表示
WD - データの書き込み/ファイルの追加
AD - データの追加/サブディレクトリの追加
REA - 拡張属性の読み取り
WEA - 拡張属性の書き込み
X - 実行/スキャン
DC - 子の削除
RA - 属性の読み取り
WA - 属性の書き込み
継承権限はどちらの形式の前にも配置でき、ディレクトリにのみ適用され
ます:
(OI) - オブジェクト継承
(CI) - コンテナー継承
(IO) - 継承のみ
(NP) - 継承を適用しない
(I) - 親コンテナーから継承した権限

例:

icacls c:\windows\* /save <ACL ファイル> /T
- c:\windows より下にあるすべてのファイルとサブディレクトリの ACL
<ACL ファイル> に保存します。

icacls c:\windows\ /restore <ACL ファイル>
- <ACL ファイル> 内のファイルのうち c:\windows とそのサブディレクト
内に存在するすべてのファイルの ACL を復元します。

icacls <ファイル> /grant Administrator:(D,WDAC)
- Administrator ユーザーに、<ファイル> に対する削除および DAC 書き込み
のアクセス許可を与えます。

icacls <ファイル> /grant *S-1-1-0:(D,WDAC)
- SID S-1-1-0 によって定義されたユーザーに、<ファイル> に対する削除
および DAC 書き込みのアクセス許可を与えます。

 


 

 

地鶏炭火焼

九州の地鶏炭火焼をよく食べに行く。

最近九州料理のお店が増えてきてどこでも食えるのだけれど、好みの店を見つけたくていろいろ新規開拓中。 

 

 


 

 


 

PHP 7.2.x から PHP 7.3.x への移行の勝手な日本語訳 後方互換のない変更⑥

PHP 7.2.x から PHP 7.3.x への移行の日本語訳がないので勝手に翻訳して備忘録にする。

 https://www.php.net/manual/ja/migration73.incompatible.php

 

BCMath Arbitrary Precision Mathematics 

BCMath関数


All warnings thrown by BCMath functions are now using PHP's error handling. Formerly some warnings have directly been written to stderr.

BCMath関数によって投げられるすべての警告は、現在PHPのエラー処理を使用しています。以前はいくつかの警告が直接stderrに書き込まれていました。

 

bcmul() and bcpow() now return numbers with the requested scale. Formerly, the returned numbers may have omitted trailing decimal zeroes.

bcmul()とbcpow()は、要求されたスケールで数値を返すようになりました。以前は、返された数値で末尾の10進ゼロが省略されていた可能性があります。

 

 

IMAP, POP3 and NNTP 

IMAPPOP3、NNTP


rsh/ssh logins are disabled by default. Use imap.enable_insecure_rsh if you want to enable them. Note that the IMAP library does not filter mailbox names before passing them to the rsh/ssh command, thus passing untrusted data to this function with rsh/ssh enabled is insecure.

rsh / sshログインはデフォルトで無効になっています。有効にしたい場合はimap.enable_insecure_rshを使用してください。 IMAPライブラリはメールボックス名をrsh / sshコマンドに渡す前にフィルタリングしないので、rsh / sshを有効にして信頼できないデータをこの関数に渡すのは安全ではありません。

 

 

Multibyte String 

マルチバイト文字列


Due to added support for named captures, mb_ereg_*() patterns using named captures will behave differently. In particular named captures will be part of matches and mb_ereg_replace() will interpret additional syntax. See Named Captures for more information.

名前付きキャプチャのサポートが追加されたため、名前付きキャプチャを使用したmb_ereg _ *()パターンの動作は異なります。特に名前付きキャプチャはマッチの一部となり、mb_ereg_replace()は追加の構文を解釈します。詳細については、名前付きキャプチャを参照してください。

 

 

MySQL Improved Extension 

MySQLの改良された拡張機能


Prepared statements now properly report the fractional seconds for DATETIME, TIME and TIMESTAMP columns with decimals specifier (e.g. TIMESTAMP(6) when using microseconds). Formerly, the fractional seconds part was simply omitted from the returned values.

DATETIME、TIME、TIMESTAMPの各桁の小数秒を小数点付きの指定子で正確に報告するようになりました(マイクロ秒を使用する場合はTIMESTAMP(6)など)。以前は、小数秒の部分は単に戻り値から省略されていました。

 

 

MySQL Functions (PDO_MYSQL

MySQL関数(PDO_MYSQL

 

Prepared statements now properly report the fractional seconds for DATETIME, TIME and TIMESTAMP columns with decimals specifier (e.g. TIMESTAMP(6) when using microseconds). Formerly, the fractional seconds part was simply omitted from the returned values. Please note that this only affects the usage of PDO_MYSQL with emulated prepares turned off (e.g. using the native preparation functionality). Statements using connections having PDO::ATTR_EMULATE_PREPARES=TRUE (which is the default) were not affected by the bug fixed and have already been getting the proper fractional seconds values from the engine.

 

DATETIME、TIME、TIMESTAMPの各桁の小数秒を小数点付きの指定子で正確に報告するようになりました(マイクロ秒を使用する場合はTIMESTAMP(6)など)。以前は、小数秒の部分は単に戻り値から省略されていました。これはエミュレートされた準備がオフになっている場合のPDO_MYSQLの使用法にのみ影響することに注意してください(例えば、ネイティブ準備機能の使用)。 PDO :: ATTR_EMULATE_PREPARES = TRUE(デフォルト)を持つ接続を使用しているステートメントは、修正されたバグの影響を受けず、エンジンから適切な小数秒の値をすでに取得しています。

 

 

Reflection 

リフレクション

Reflection export to string now uses int and bool instead of integer and boolean, respectively.

文字列へのリフレクションエクスポートで、整数とブール値の代わりにそれぞれintとboolが使用されるようになりました。

 

 

 

Standard PHP Library (SPL) 

標準PHPライブラリ(SPL)

 

If an SPL autoloader throws an exception, following autoloaders will not be executed. Previously all autoloaders were executed and exceptions were chained.

 SPLオートローダが例外をスローした場合、以下のオートローダは実行されません。以前はすべてのオートローダが実行され、例外が連鎖していました。

 

 

SimpleXML 

SimpleXML

 

Mathematic operations involving SimpleXML objects will now treat the text as an integer or float, whichever is more appropriate. Previously values were treated as integers unconditionally.

 SimpleXMLオブジェクトを含む数学演算は、テキストを整数または浮動小数点のどちらか適切な方として扱うようになりました。以前は、値は無条件に整数として扱われていました。

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

気づけばプロ並みPHP 改訂版ーーゼロから作れる人になる! [ 谷藤賢一 ]
価格:2916円(税込、送料無料) (2019/6/9時点)

楽天で購入

 

PHP 7.2.x から PHP 7.3.x への移行の勝手な日本語訳 後方互換のない変更⑤

PHP 7.2.x から PHP 7.3.x への移行の日本語訳がないので勝手に翻訳して備忘録にする。

https://www.php.net/manual/ja/migration73.incompatible.php

 

 

Miscellaneous

その他

 

The ext_skel utility has been completely redesigned with new options and some old options removed. This is now written in PHP and has no external dependencies.

ext_skelユーティリティは、新しいオプションといくつかの古いオプションを削除して完全に再設計されました。 これは現在PHPで書かれており、外部の依存関係はありません。

 

 

Support for BeOS has been dropped.

BeOSのサポートは終了しました。

  

Exceptions thrown due to automatic conversion of warnings into exceptions in EH_THROW mode (e.g. some DateTime exceptions) no longer populate error_get_last() state. As such, they now work the same way as manually thrown exceptions.

EH_THROWモードでの警告から例外への自動変換によってスローされた例外(例えば、いくつかのDateTime例外)は、error_get_last()状態を生成しなくなりました。 そのため、現在は手動で例外をスローするのと同じように機能します。

 


TypeError now reports wrong types as int and bool instead of integer and boolean, respectively.

TypeErrorは、間違った型をそれぞれintegerとbooleanではなくintとboolとして報告するようになりました。

 

Undefined variables passed to compact() will now be reported as a notice.

compact()に渡された未定義の変数は、通知として報告されるようになります。

  

getimagesize() and related functions now report the mime type of BMP images as image/bmp instead of image/x-ms-bmp, since the former has been registered with the IANA (see » RFC 7903).  

getimagesize()と関連する関数はBMPイメージのMIMEタイプをimage / x-ms-bmpではなくimage / bmpとして報告するようになりました。前者はIANAに登録されているからです(»RFC 7903を参照)。

 

stream_socket_get_name() will now return IPv6 addresses wrapped in brackets. For example "[::1]:1337" will be returned instead of "::1:1337".

stream_socket_get_name()は、括弧で囲まれたIPv6アドレスを返すようになりました。 たとえば、 ":: 1:1337"の代わりに "[:: 1]:1337"が返されます。

 

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

気づけばプロ並みPHP 改訂版ーーゼロから作れる人になる! [ 谷藤賢一 ]
価格:2916円(税込、送料無料) (2019/6/9時点)

楽天で購入

 

PHP 7.2.x から PHP 7.3.x への移行の勝手な日本語訳 後方互換のない変更④

PHP 7.2.x から PHP 7.3.x への移行の日本語訳がないので勝手に翻訳して備忘録にする。

 https://www.php.net/manual/ja/migration73.incompatible.php

 

Static Properties no longer separated by Reference Assignment 

静的プロパティは参照代入で分離されなくなりました

 


In PHP, static properties are shared between inheriting classes, unless the static property is explicitly overridden in a child class. However, due to an implementation artifact it was possible to separate the static properties by assigning a reference. This loophole has been fixed.

PHPでは、静的プロパティが子クラスで明示的にオーバーライドされない限り、静的プロパティは継承クラス間で共有されます。 ただし、実装の成果物のため、参照を割り当てることで静的プロパティを分離することができました。 この抜け穴は修正されました。

 

<?php
class Test {
    public static $x = 0;
}
class Test2 extends Test { }

Test2::$x = &$x;
$x = 1;

var_dump(Test::$x, Test2::$x);
// Previously: int(0), int(1)
// Now:        int(1), int(1)
?>


つづいて

 

References returned by Array and Property Accesses are immediately unwrapped

ArrayおよびProperty Accessから返された参照は、すぐに展開されます


References returned by array and property accesses are now unwrapped as part of the access. This means that it is no longer possible to modify the reference between the access and the use of the accessed value:


配列およびプロパティアクセスによって返される参照は、アクセスの一部としてラップ解除されるようになりました。 これは、アクセスとアクセスされた値の使用との間の参照を変更することがもはや不可能であることを意味します。

 

<?php
$arr = [1];
$ref =& $arr[0];
var_dump($arr[0] + ($arr[0] = 2));
// Previously: int(4), Now: int(3)
?>

 

This makes the behavior of references and non-references consistent. Please note that reading and writing a value inside a single expression remains undefined behavior and may change again in the future.

これにより、参照と非参照の動作が一致します。 単一の式の中で値を読み書きすることは未定義の動作のままであり、将来再び変わるかもしれないことに注意してください。

つづいて


Argument Unpacking of Traversables with non-Integer Keys no longer supported

整数キー以外のTraversableの引数展開はサポートされなくなりました

 

Argument unpacking stopped working with Traversables with non-integer keys. The following code worked in PHP 5.6-7.2 by accident.

引数の展開が、整数以外のキーを持つTraversablesで動作しなくなりました。 次のコードは偶然にPHP 5.6-7.2で動きました。

 

<?php
function foo(...$args) {
    var_dump($args);
}
function gen() {
    yield 1.23 => 123;
}
foo(...gen());
?>

 

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

気づけばプロ並みPHP 改訂版ーーゼロから作れる人になる! [ 谷藤賢一 ]
価格:2916円(税込、送料無料) (2019/6/9時点)

楽天で購入