新年あけましておめでとうございます。

Wellcome 2017 !

あれ、、、
あれれ、、、

PHPでHWしたところ、シンタックスエラーが出ているじゃあありませんか。

環境

  • macOS sierra
  • ほぼ初期状態のMacBook (12inch)
  • Atom + linter + linter-php

php-liner

先ほどの画像は軽くてカスタマイズ可能なエディタAtomに、静的コード解析のlinterを設定したものです。

Atom
https://atom.io/

linter
https://atom.io/packages/linter

linter-phpの設定

linterは言語別に追加パッケージをインストールする必要があり、PHPの開発にはlinter-phpを追加でインストールしましす。

linter-php
https://atom.io/packages/linter-php

linter-phpは、環境にインストールされているPHPバイナリの静的解析をそのまま利用する実装となっているようです。

Atom > 環境設定のlinter-phpを見ていきます。

設定項目はほとんどありませんね。
PHPの実行パスとしてデフォルト値が設定されており、「php -l」を実行し、エディタ上にエラーを出力していることがここからも読み取れます。

ちなみにphp -hすると、lオプションが[ Syntax check only (lint) ]と説明されていることが確認できます。

意図しないシンタックスエラー

冒頭のコードはPHP7から追加された機能である戻り値の型宣言を含んだコードです。

次のようにコードを変更し、引数の型宣言を入れた場合はシンタックスエラーとはななりません。

どうやら、PHP7の新しいシンタックスが解釈できていないようだということがわかりました。

PHPの型宣言

ここでPHPの型宣言についておさらいしてみましょう。
PHPの型宣言型安全が大好きな私がぜひとも欲しいと思っていた機能で、積極的に型宣言を布教しております。

PHPの型宣言はざっくり次のようにバージョンごとに差があります。

PHP5 PHP7
範囲 引数の型宣言 + 戻り値の型宣言
指定できる型 クラス、インターフェース、array、callable + スカラー型(bool、float、int、string)

より詳細な情報はぜひPHPのマニュアルをご覧ください

戻り値の型宣言

PHP マニュアル > 言語リファレンス > 関数 > 戻り値の型宣言
http://php.net/manual/ja/functions.returning-values.php#functions.returning-values.type-declaration

型について

PHP マニュアル > 言語リファレンス > 関数 > 有効な型
http://php.net/manual/ja/functions.arguments.php#functions.arguments.type-declaration

なお、PHPマニュアルには以下のように記載があり、私はタイプヒントという呼び方はしないようにしております。

注意:
型宣言は、PHP 5 ではタイプヒンティングとも呼ばれていました。

PHP マニュアル > 言語リファレンス > 関数 > 型宣言
http://php.net/manual/ja/functions.arguments.php#functions.arguments.type-declaration

PHPのバージョンを変更する

それでは現在インストールされているPHPのバージョンを確認してみます。

$ php -v
PHP 5.6.27 (cli) (built: Oct 23 2016 11:47:58) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

やはり、PHP5.6が動作しておりました。
これをアンインストールし、新たにPHP7を導入してあげれば良さそうです。

ということで、PHP7を導入しました。

$ php -v
PHP 7.0.14 (cli) (built: Dec 29 2016 07:57:18) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

PHP7が導入された状態でAtomを開くと、冒頭のコード出ていたシンタックスエラーが解消することを確認いたしました。

PHP7の導入については長くなりましたため、別の記事にまとてございます。

[Mac]phpbrewを導入してみた
mac環境にPHPを導入、管理するにはphpbrewという便利なツールがあり大変便利です。 今回手元のMacにphpbrewを導...

スポンサーリンク
ad_336
ad_336
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク
ad_336