ブログBlog

PHPとPerlの変数とスコープ

投稿日:2021年08月06日 トピックス

こんにちは、江宮です。

この前業務でPHPとPerlを扱う機会がありました。

そこで変数のスコープをしっかり意識しておかなければ、システムにバグが発生することを知ったので、今日は備忘録的に書き留めたいと思います。


Perlで変数宣言するとき

基本的には以下の3通りになります。

  my $変数名 = “hello”;(ローカル:宣言した関数内から参照可)

  local $変数名 = “hello”; (サブローカル:宣言した関数内と実行関数内から参照可)

  our $変数名 = “hello; (グローバル:パッケージ外からは完全修飾名で参照可)

といったように、スコープによって書き方がちがってきます。また、use strict宣言なしでは修飾子なしで

  $変数名 = “hello”; (グローバル)

と記述することも可能です。


PHPで変数宣言するとき

  $変数名 = “hello”; (ローカル:宣言した関数内から参照可)

が基本です。

しかしスコープが一つの関数内だけでは複雑な処理には対応できません。

ここで、変数のスコープをグローバル化するには、グローバル修飾子というものを使用します。

関数外で初期化しておき、関数内でglobal宣言しておきます。

  $変数名 = “hello”;

  function 関数名(){

   global $変数名;

   ….

  }

といった構造です。

また関数内でstatic修飾子を使用して変数宣言することによって、関数外でもその変数の値を保持することもできます。

  static $変数名 = “hello”;

他には各言語共通で基本的な方法ですが、関数の引数で変数値を受け取って加工し、戻り値で返すといった方法もありますね。


まとめ

この2年間でPHP、Java、Perlと少しずつ言語知識が増えてきましたが、早くスマホの開発知識をつけていきたいと思います。
PAGE TOP