No.6ベストアンサー
- 回答日時:
>> <前略>
>> ということでしょうか?
基本的にはそうです。
以下のように 親クラスのコンストラクター内で
他クラスのインスタンスを作っておけば後は関数を使えます。
-- fileA.php --
<?php
require_once('fileB.php');
require_once('fileC.php');
class Test{
var $clsB;
var $clsC;
//Constructor
function Test(){
$this->clsB =NEW BM();
$this->clsC =NEW CM();
}
function funcB($t){
return $this->clsB->testBM($t);
}
function funcC($t){
return $this->clsC->testCM($t);
}
}
-- fileB.php --
<?php
class BM{
function testBM($t) {return 'classBで['.$t.']処理';}
}
?>
-- fileC.php--
<?php
class CM{
function testCM($t) {return 'classCで['.$t.']処理';}
}
?>
-- 実行ファイル --
<?php
require_once('fileA.php');
$test=NEW Test;
$t="データ";
echo $test->funcB($t);
echo "<br>\n";
echo $test->funcC($t);
echo "<br>\n";
// ラッパー関数を使わない場合
echo $test->clsC->testCM($t);
?>
他に、クラスの継承 extends を使うというのも手です。
クラス内にインスタンスを持たせる方法も一つですが、
やはり、PHP5では継承・インターフェースを使うほうがスマートかもしれません。
継承・インターフェースの方向で検討します。
No.5
- 回答日時:
たぶんinclude(またはrequire)の仕方を質問しているわけでは無いですよね。
PHPでは、下記構造で作るのがスマートだと考えます。
■Aファイル
class Test {
プロパティ
メソッド1(ClassBのインスタンスを作成)
メソッド2(ClassCのインスタンスを作成)
...
}
■Bファイル(ClassB)
メソッド1の具体的な処理
■Cファイル(ClassC)
メソッド2の具体的な処理
回答ありがとうございます。
非常に興味がありますが、具体的には
class Test {
var $a = 1;
var $b, $c;
function bm() { $this->b = new BM(); }
function cm($x){ $this->c = new CM($x); }
};
■Bファイル
class BM {
function BM(){
$this->__construct();
}
function __construct(){
...
}
...
}
ということでしょうか?
No.4
- 回答日時:
>おなじメソッドのために2度読んできても
2回呼び出す必要があるってすでにクラスの設計の段階で間違った設計しているよ。
だからこそ「_once」の方を利用する。
No.3
- 回答日時:
#2さんのご指摘ですが、今回のケースに限ってはxxx_onceではない方がよいのでは?
おなじメソッドのために2度読んできても2回目のものがよみこまれなくなってしまい
意図したものと違ってくると思います。
クラスを組んでやるなら、xxx_onceは非常に有効な処理なので、切り分けて考えましょう
No.2
- 回答日時:
この手の処理を書くときにはinclude()が定番ですが
include_once()の方がいいでしょう。
それから処理的にinclude()/include_once()は中断しないのでエラー時に処理を中断させたければ
require()/require_once()を利用した方がいいです。
No.1
- 回答日時:
//hoge.php
<?PHP
class hoge{
function __construct(){
include "fuga.php";
}
}
new hoge;
?>
//fuga.php
<?PHP
print "fuga";
?>
できないことはないですが、やるならクラス単位でincludeしてやる方がいいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- PostgreSQL ポストグレにあるExcelファイルを開くには 1 2022/12/13 18:07
- PHP アップロードファイルの数に応じてCSSを動的に変更したいのですが、方法がわかりません 3 2023/07/23 21:59
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) Csvファイルの最終行を取得する構文はこれであっていますか?オブジェクトは、このプロパティまたはメソ 3 2022/12/26 14:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「クラス関数」「メンバ関数」...
-
phpで使用不可のクラス名
-
php 完了画面の送信メールのコ...
-
TCPDFについて
-
CFileDialogの最初のディレクト...
-
フォントの色を変えるには?
-
onedrive にexcelファイルをア...
-
phpのftp_get()でエラーが出ます。
-
phpでget_headers()が使えない?
-
Content-Typeが機能していない?
-
awsにApacheとPHPを入れて、何...
-
XAMPPでApacheが起動しなくなり...
-
PHPのif文でその処理を途中で抜...
-
ワードプレスサイト PHP8.0.25...
-
拡張子php画像をjpg画像等に変...
-
mb_send_mail関数が利用出来ない
-
正規表現での最後尾のバックス...
-
Cronで同じ処理を複数同時に実...
-
HTMLに埋め込んだPHPがうまく出...
-
.phpと.incファイルの違いはな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「クラス関数」「メンバ関数」...
-
phpのクラスメソッドの定義が長...
-
ラッパークラスって何ですか?
-
'_'(アンダースコア)の使い方...
-
配列とオブジェクトの違い
-
class定義のphpをファイル分割...
-
PHP4、PHP5 1ファイル複数クラ...
-
php、可変プロパティ名について
-
関数定義の関数名の前にある&(...
-
phpのクラスにて別ファイルの変...
-
クラス設計の良い参考書を教え...
-
class.upload.phpの戻り値(返...
-
【PHP】クラス と 関数 の違い
-
php インスタンスとオブジェク...
-
PHPでサブクラスからスーパクラ...
-
クラス
-
Re: Cookieを使ってオブジェク...
-
onedrive にexcelファイルをア...
-
フォントの色を変えるには?
-
index.phpに入るには、どうすれ...
おすすめ情報