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

回答編集履歴

6

後学のために修正

2021/03/16 05:59

投稿

FKM
FKM

スコア3662

answer CHANGED
@@ -49,6 +49,6 @@
49
49
  }
50
50
  ```
51
51
 
52
- これのようですが、このファイルの名前空間で制御されているのはbackend\eachHpsなのでunvHpクラスはその上の名前空間の中でしか使えません。
52
+ これのようですが、このファイルの名前空間で制御されているのはbackend\eachHpsなのでunvHpクラス内のメソッドdomOfUnvHpはその上の名前空間の中でしか使えません。
53
53
 
54
- したがって、**doScrap.phpから呼び出すためにはファイルの名前空間を再定義するか、直接、呼び出そうとしているファイルの名前空間のパスを明示してからメソッドを呼び出さないといけない**はずです。
54
+ したがって、**doScrap.phpからdomOfUnvHpメソッドを呼び出すためにはdoScrap.phpファイルの名前空間を再定義するか、直接、呼び出そうとしているファイルの名前空間のパスを明示してからメソッドを呼び出さないといけない**はずです。

5

クラス名の修正

2021/03/16 05:58

投稿

FKM
FKM

スコア3662

answer CHANGED
@@ -49,6 +49,6 @@
49
49
  }
50
50
  ```
51
51
 
52
- これのようですが、このファイルの名前空間で制御されているのはbackend\eachHpsなのでunvHpメソッドはその上の名前空間の中でしか使えません。
52
+ これのようですが、このファイルの名前空間で制御されているのはbackend\eachHpsなのでunvHpクラスはその上の名前空間の中でしか使えません。
53
53
 
54
54
  したがって、**doScrap.phpから呼び出すためにはファイルの名前空間を再定義するか、直接、呼び出そうとしているファイルの名前空間のパスを明示してからメソッドを呼び出さないといけない**はずです。

4

さらに改善

2021/03/16 02:17

投稿

FKM
FKM

スコア3662

answer CHANGED
@@ -1,4 +1,4 @@
1
- 別の名前空間のメソッド呼び出してませんか?
1
+ 別の名前空間のメソッド呼び出そうとしてませんか?
2
2
 
3
3
  エラー内容はこうです。
4
4
 
@@ -18,7 +18,7 @@
18
18
  <?php
19
19
  namespace backend;
20
20
 
21
- use backend\eachHps\unvHp;
21
+ use backend\eachHps\unvHp; //ここで有効な名前空間
22
22
 
23
23
  var_dump(unvHp::domOfUnvHp()); //これを呼ぼうとしている?
24
24
 
@@ -30,11 +30,12 @@
30
30
  ```PHP
31
31
  <?php
32
32
 
33
- namespace backend\eachHps;
33
+ namespace backend\eachHps; //先ほどと名前空間の定義が異なっている
34
34
 
35
35
  use backend\Usecases\doScrapingUsecase;
36
36
 
37
37
 
38
+ //このクラスは上で定義した名前空間でのみ有効
38
39
  class unvHp
39
40
  {
40
41
  private const url = "https://www.tohoku.ac.jp/japanese/rss/cate_tar_student/index.xml";
@@ -50,4 +51,4 @@
50
51
 
51
52
  これのようですが、このファイルの名前空間で制御されているのはbackend\eachHpsなのでunvHpメソッドはその上の名前空間の中でしか使えません。
52
53
 
53
- したがって、**doScrap.phpからスコープで呼び出すためには名前空間から再定義するか、パスを明示してメソッドを呼び出さないといけない**はずです。
54
+ したがって、**doScrap.phpから呼び出すためにはファイルの名前空間再定義するか、直接、呼び出そうとしているファイルの名前空間のパスを明示してからメソッドを呼び出さないといけない**はずです。

3

文章の整理

2021/03/15 09:20

投稿

FKM
FKM

スコア3662

answer CHANGED
@@ -7,11 +7,13 @@
7
7
  not found in /var/www/html/backend/doScraping.php:8 Stack trace:
8
8
  #0 /var/www/html/index.php(2): require_once()
9
9
  #1 {main} thrown in /var/www/html/backend/doScraping.php on line 8
10
- doScrap.phpの8行目にあるbackend\eachHps\unvHpなんてクラスなんて知りませんってことです。
11
10
  ```
12
11
 
13
- では、そのdoScrap.php8行目を推理してみると
12
+ doScrap.php8行目にあbackend\eachHps\unvHpなんてクラスなんて知りませんってこです。
14
13
 
14
+
15
+ では、そのdoScrap.phpの8行目ですが、var_dumpで呼び出そうとしているものだと仮定します。
16
+
15
17
  ```php
16
18
  <?php
17
19
  namespace backend;
@@ -23,7 +25,7 @@
23
25
 
24
26
  ```
25
27
 
26
- はunvHp::domOfUnvHPメソッドがあるファイルはどれかを見ていると
28
+ このメソッドがbackend\eachHps\unvHpクラスに存在していないとエラーを吐いているので、unvHp::domOfUnvHPメソッドがあるファイルはどれかを見ていると
27
29
 
28
30
  ```PHP
29
31
  <?php
@@ -46,6 +48,6 @@
46
48
  }
47
49
  ```
48
50
 
49
- これのようですが、このファイルの名前空間で制御されているのはbackend\eachHpsなのでunvHpメソッドはその上の名前空間の中でしか使えないメソッドであるはずです
51
+ これのようですが、このファイルの名前空間で制御されているのはbackend\eachHpsなのでunvHpメソッドはその上の名前空間の中でしか使えません
50
52
 
51
- したがって、doScrap.phpからスコープで呼び出すためには名前空間から定義してメソッドを呼び出さないといけないはずです。
53
+ したがって、**doScrap.phpからスコープで呼び出すためには名前空間から定義するか、パスを明示してメソッドを呼び出さないといけない**はずです。

2

ソースがおかしかったので

2021/03/15 09:15

投稿

FKM
FKM

スコア3662

answer CHANGED
@@ -24,13 +24,15 @@
24
24
  ```
25
25
 
26
26
  ではunvHp::domOfUnvHPメソッドがあるファイルはどれかを見ていると
27
+
28
+ ```PHP
27
29
  <?php
28
30
 
29
31
  namespace backend\eachHps;
30
32
 
31
33
  use backend\Usecases\doScrapingUsecase;
32
34
 
33
- ```PHP
35
+
34
36
  class unvHp
35
37
  {
36
38
  private const url = "https://www.tohoku.ac.jp/japanese/rss/cate_tar_student/index.xml";
@@ -46,4 +48,4 @@
46
48
 
47
49
  これのようですが、このファイルの名前空間で制御されているのはbackend\eachHpsなのでunvHpメソッドはその上の名前空間の中でしか使えないメソッドであるはずです。
48
50
 
49
- したがって、doScrap.phpからスコープで呼び出すためには名前空間からメソッドを呼び出さないといけないはずです。
51
+ したがって、doScrap.phpからスコープで呼び出すためには名前空間から定義してメソッドを呼び出さないといけないはずです。

1

途中で勝手に転送したので

2021/03/15 09:04

投稿

FKM
FKM

スコア3662

answer CHANGED
@@ -30,6 +30,7 @@
30
30
 
31
31
  use backend\Usecases\doScrapingUsecase;
32
32
 
33
+ ```PHP
33
34
  class unvHp
34
35
  {
35
36
  private const url = "https://www.tohoku.ac.jp/japanese/rss/cate_tar_student/index.xml";
@@ -40,4 +41,9 @@
40
41
  $dom = $rawDom->not("id");
41
42
  return $dom;
42
43
  }
43
- }
44
+ }
45
+ ```
46
+
47
+ これのようですが、このファイルの名前空間で制御されているのはbackend\eachHpsなのでunvHpメソッドはその上の名前空間の中でしか使えないメソッドであるはずです。
48
+
49
+ したがって、doScrap.phpからスコープで呼び出すためには名前空間からメソッドを呼び出さないといけないはずです。