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

回答編集履歴

2

edit

2021/06/26 09:07

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -27,4 +27,41 @@
27
27
  public function select(string $sql):array{
28
28
  return parent::select($sql);
29
29
  }
30
+ ```
31
+
32
+ 簡易実装イメージ
33
+ ```php
34
+ <?php
35
+ <?php
36
+ class p {
37
+ protected $con;
38
+
39
+ protected function execute(){
40
+ echo $this->con;
41
+ }
42
+ }
43
+
44
+ class c1 extends p{
45
+ function __construct(){
46
+ $this->con = "aa";
47
+ }
48
+ function ex(){
49
+ $this->execute();
50
+ }
51
+ }
52
+ class c2 extends p{
53
+ function __construct(){
54
+ $this->con = "bb";
55
+ }
56
+ function ex(){
57
+ $this->execute();
58
+ }
59
+ }
60
+
61
+ $c1 = new c1();
62
+ $c2 = new c2();
63
+ $c1->ex();
64
+ $c2->ex();
65
+
66
+
30
67
  ```

1

edit

2021/06/26 09:07

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -3,4 +3,28 @@
3
3
  [サーバーのphpを7.0にした際に出る【Warning: Declaration of My_Walker::start_el〜】の対処方法 ](https://oku-log.com/blog/error-my-walker/)
4
4
 
5
5
 
6
- 親側は引数に$sql(おそらくstring)をとり、戻り値にarrayが指定されるにも関わらず、子側は引数も戻り値もありません。
6
+ 親側は引数に$sql(おそらくstring)をとり、戻り値にarrayが指定されるにも関わらず、子側は引数も戻り値もありません。
7
+
8
+ とりあえず動かすなら子のほうをこう
9
+ ```php
10
+ public function select($sql){
11
+ return parent::select($sql);
12
+ }
13
+ ```
14
+
15
+ ですが、今回のようなミスを防ぐためにも引数、戻り値に[型宣言](https://www.php.net/manual/ja/language.types.declarations.php)することを強くすすめます。
16
+
17
+ ```php
18
+ //親
19
+ public function select(string $sql):array{
20
+ $hoge=$this->pdo();
21
+ $stmt=$hoge->query($sql);
22
+ $items=$stmt->fetchAll(PDO::FETCH_ASSOC);
23
+ return $items;
24
+ }
25
+
26
+ //子
27
+ public function select(string $sql):array{
28
+ return parent::select($sql);
29
+ }
30
+ ```