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

回答編集履歴

2

追記:selfの使い所

2017/01/17 02:11

投稿

miyabi-sun
miyabi-sun

スコア21505

answer CHANGED
@@ -62,4 +62,21 @@
62
62
  return $users;
63
63
  }
64
64
  }
65
- ```
65
+ ```
66
+
67
+ ---
68
+
69
+ 追記:インスタンス化されたオブジェクトが`self::xxx`を使う意味について解説してなかったですね…
70
+ **この辺は完全に設計者の好み**になることをまず前提として書いておきます。
71
+
72
+ [数学的な意味での関数](https://ja.wikipedia.org/wiki/%E9%96%A2%E6%95%B0_(%E6%95%B0%E5%AD%A6))は**ある変数に依存して決まる値あるいはその対応を表す式の事であった。**と説明されています。
73
+ クラス定数なんかもPHPでは宣言出来ますが、staticのメソッドはその関数版として扱う事も考えられます。
74
+
75
+ この辺は関数型プログラミングの話になってきますので端折りますが、
76
+ staticメソッドは≒[参照透過性](https://ja.wikipedia.org/wiki/%E5%8F%82%E7%85%A7%E9%80%8F%E9%81%8E%E6%80%A7)のメソッドという宣言なわけで、
77
+ 単体テストのコードによる自動テストが非常にしやすく、正常な動作を保証しやすい事がメリットとして挙げられます。
78
+
79
+ とりあえず、出来ればそのself::を使った方と一度話してみてください。
80
+ (説明が要領得なかったり、staticのないメソッドをselfで叩いているなら論外ですが)
81
+ この考えが気に入ればstaticなメソッドを増やせないかを考えて出来るだけselfで統一していっても良いですし、
82
+ 別に気に入らなければ今まで通り$this->を使っていっても良いかと思います。

1

まとめを上に

2017/01/17 02:11

投稿

miyabi-sun
miyabi-sun

スコア21505

answer CHANGED
@@ -1,3 +1,14 @@
1
+ まずはまとめというか私の見解から
2
+
3
+ - self::xxxのメソッドは、static宣言されているのですか?されてないなら単純に作った人のミスです。
4
+ - 今更質問するということは、クラスが2種類の働き方をする設計を意識したこと無いのでは?だから現在の設計はクラスはインスタンス化して使う前提で設計されているはずなので、$this->で統一してもいいのでは?
5
+ - 2種類の働き方をするクラスは人によっては「気持ち悪い。別にクラス2つ作ればいいじゃん」と感じるようです。今までどおり$this->で統一するやり方も十分ありです。
6
+
7
+ 下記に根拠、2種類の働き方をするクラスの紹介をします。
8
+ ※この2種類の働き方をするクラスって正式名称みたいなものはあるのですかね…?
9
+
10
+ ---
11
+
1
12
  > 正直、どっちでもいい話だと思いますが、作法としてはどうなのかが気になって、質問させて頂きました。
2
13
 
3
14
  前提としてはクラスに紐づくメソッドか、インスタンスに紐づくメソッドかで決まります。
@@ -51,12 +62,4 @@
51
62
  return $users;
52
63
  }
53
64
  }
54
- ```
65
+ ```
55
-
56
- ---
57
-
58
- 上記を踏まえてまとめ
59
-
60
- - self::xxxのメソッドは、static宣言されているのですか?されてないなら単純に作った人のミスです。
61
- - 今更質問するということは、クラスが2種類の働き方をする設計を意識したこと無いんでしょ?だから$this->で統一してもいいんじゃないでしょうか?
62
- - 2種類の働き方をするクラスは人によっては「気持ち悪い。別にクラス2つ作ればいいじゃん」と感じるようです。今までどおり$this->で統一するやり方もありかと思います。