teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

タイプヒンティングコードミス修正

2017/09/01 18:49

投稿

Tomak
Tomak

スコア1652

answer CHANGED
@@ -17,7 +17,7 @@
17
17
 
18
18
  ```php
19
19
  // 型宣言(タイプヒンティング)
20
- function something (Array $param = array()) {
20
+ function something (array $param = array()) {
21
21
  ...
22
22
  };
23
23
 

2

タイプヒンティングコードミス修正

2017/09/01 18:49

投稿

Tomak
Tomak

スコア1652

answer CHANGED
@@ -17,10 +17,12 @@
17
17
 
18
18
  ```php
19
19
  // 型宣言(タイプヒンティング)
20
- Array $array = array();
20
+ function something (Array $param = array()) {
21
+ ...
22
+ };
21
23
 
22
- $array = array(1,2,3); // OK
24
+ something(array(1,2,3)); // OK
23
- $array = 1 // NG
25
+ something(1) // NG
24
26
  ```
25
27
 
26
28
  > $e->getMessage() はインスタンスである$eのgetMessagemeメソッドを使用しているということですよね?`$e = new Exception();`

1

タイプミス修正

2017/09/01 18:43

投稿

Tomak
Tomak

スコア1652

answer CHANGED
@@ -1,21 +1,28 @@
1
1
  > catch(Exception $e)の部分の「Exception」は定義済みのクラスのことですよね?
2
2
  $eはExceptionクラスのインスタンス(オブジェクト)という意味でしょうか?
3
3
 
4
- PHP内部の定義済みのクラスのことです。[適宜済みの例外](http://php.net/manual/ja/reserved.exceptions.php)は他にもあります。
4
+ PHP内部の定義済みのクラスのことで[定義済みの例外](http://php.net/manual/ja/reserved.exceptions.php)は他にもあります。PHP7では`Error $e`というのもあります。
5
5
 
6
+ ```
6
- もともと、PHPには`try~catch 例外処理`がありませんでした。
7
+ もともと、PHPにはtry~catch 例外処理」はありませんでした。
8
+ ```
7
9
 
8
10
  導入された際に例外の`$e`だけ特殊な扱いで`型宣言`しなくてはならない仕様で導入されました。
9
- これが`Exception $e`です。PHP7では`Error $e`というのもあります。
11
+ これが`Exception $e`です。
10
12
 
11
- 普通、オブジェクト指向言語では変数の`型宣言`をしなくてはなりません。ストリング(オブジェクト)型の変数$strの場合は、`String $str`という具合です。PHPは型を自動判断しましょうといういうことなので型を書ません。
13
+ 普通、オブジェクト指向言語では変数の`型宣言`をしなくてはなりません。ストリング(オブジェクト)型の変数$strの場合は、`String $str`という具合です。PHPは型を自動判断しましょうというコンセプトなので通常は型を書かず、例外の時だけ`Exception $e`と書かなければいけません。
12
14
 
13
- [PHPマニュアルの型宣言について(タイプヒンティング)](http://php.net/manual/ja/functions.arguments.php#functions.arguments.type-declaration)に宣言できる一覧が記載されてます。
15
+ [PHPマニュアルの型宣言について(タイプヒンティング)](http://php.net/manual/ja/functions.arguments.php#functions.arguments.type-declaration)に宣言できる一覧が記載されてます。
14
- 例えば`Array $array`などです。
16
+ 例えば`Array $array`などというように型を定義して変数宣言きます。こうすることで、配列以外の型を代入することはできなくなり、より厳密にプログラムを作成することができるようになります。
15
17
 
18
+ ```php
19
+ // 型宣言(タイプヒンティング)
20
+ Array $array = array();
21
+
22
+ $array = array(1,2,3); // OK
23
+ $array = 1 // NG
24
+ ```
25
+
16
26
  > $e->getMessage() はインスタンスである$eのgetMessagemeメソッドを使用しているということですよね?`$e = new Exception();`
17
27
 
18
28
  正確には`try{throw new \Exception();}catch(\Exception $e){}`ですが、感覚的にはあってます。
19
-
20
- いまいち驚きが伝わらないのですが、PHP内部のクラスなどは別に珍しくないですよ。
21
- 例えばDB接続でおなじみの`PDO`もPHPの内部クラスです。