スレッド表示 | フラット表示〕 全トピック 920 件中 648 番目 次≫ ≪前

外部ファイルを読み込む

created: 2004-03-31 21:02 | modified: 2004-04-01 10:49 | reply: 8

[1454] 外部ファイルを読み込む

user: ぽむぞう | created: 2004-03-31 21:02
お世話になっております。
ぽむぞうです。

クラス内で使う変数が
共通変数用として作られたparameter.phpに定義されています。

クラスが定義してある、class.phpの外に
include(parameter.php)と記述したのですが、エラーがでました。
クラス内でinclude(parameter.php)としてみたら変数が取得できたので、この状態でやっています。

クラス内でこんなことをやっていいのでしょうか?
正式なやりかたをお聞きしたく書き込みしました。

動かなかった例:
<?php
include(parameter.php);

class(){

method1(){
}
method2(){
}
}
?>


動いた例:
<?php
include(parameter.php);

class(){

method1(){
include(parameter.php);
}
method2(){
}
}
?>
reply: 1456 1463 返信 編集 削除

[1456] 継承

user: hamaji | created: 2004-04-01 00:13
こんばんは。
こういう場合はクラスの継承(インヘリタンス)を行えばいいと思います。

ただ、『parameter.php』もクラスである必要がありますが。。。

『parameter.php』
<?php
class A {
function a_test() {
echo "This is A test!!<br>";
}
}
?>

includeする
<?php
include(parameter.php);

class B extends A {
function b_test() {
$this->a_test();
echo "This is B Test !!<br>";
}
}

$b = new B;

$b->b_test();
?>

出力結果:
This is A Test !!
This is B Test !!
となります。

詳しくはPHPマニュアルのクラスの章を
ご覧ください。
Parent: 1454  reply: 1458 1459 返信 編集 削除

[1458] 続・継承

user: hamaji | created: 2004-04-01 00:28
すいません。
やりたいことは外部ファイルに定義した
共通変数を使うということですね。
勘違いしてました。

これでどうでしょう。
a.php(共通の変数を定義するクラス)
<?php
class A {
var $name;
}
?>

b.php(a.phpの共通変数を表示します。)
<?php
include "a.php";

class B extends A {

// コンストラクタ
function B($name) {
$this->name = $name;
}

function display() {
echo "あなたは" . $this->name . "さんですね。<br>";
}
}
$b = new B("太郎");
$b->display();
?>

出力結果:
あなたは太郎さんですね。

詳しくはPHPマニュアルをご参照ください。
Parent: 1456  reply: 1460 1461 返信 編集 削除

[1460] 続・継承

user: hamaji | created: 2004-04-01 00:42
何度もすいません。
ちょっとわかりにくいかもしれないですね。

これでどうでしょう。
a.php(共通の変数を定義するクラス)
<?php
class A {
var $name;
var $age;

// Aのコンストラクタ
function A() {
$this->name = "太郎";
$this->age = 25;
}
}
?>

b.php(a.phpの共通変数を表示します。)
<?php
include "a.php";

class B extends A {

function display() {
echo "名前は" . $this->name . "さんです。<br>";
echo "年齢は" . $this->age . "歳です。<br>";
}
}
$b = new B;
$b->display();
?>

出力結果:
名前は太郎さんです。
年齢は25歳です。
Parent: 1458  reply: 1462 返信 編集 削除

[1462] なるほど。。

user: ぽむぞう | created: 2004-04-01 00:59
たびたび、すいません。
返信が入れ違いになってしまって。。。
1460番のお返事のように、
使う変数を定義していけばよいのですね。

はじめてクラスというものを作っていて、
継承の勉強にもなりました。

hamajiさん、ありがとうございます!!
Parent: 1460  返信 編集 削除

[1461] 入れ違いになりました

user: ぽむぞう | created: 2004-04-01 00:53
hamajiさん、こんにちは。
質問の内容が入れ違いになりました。
「続・継承」を拝見すると、やはり変数はクラス内に宣言しないと駄目という事なんですね・・(汗

<?php

class A {
var $aisatu1 = "こんにちは";
var $aisatu2 = "こんばんは";
var $aisatu3 = "おはよう";
}

?>


ご親切にありがとうございます。
マニュアル見てみます。
Parent: 1458  返信 編集 削除

[1459] とすると・・

user: ぽむぞう | created: 2004-04-01 00:40
こんばんは。
hamajiさん。
お返事どうもありがとうございます。

複数で開発を行う時、Javaとかだと、共通で使う変数をparameter.javaという感じにして、
そこに変数の定義を行いますよね。

たとえば
-parameter.javaファイル-
aisatu1 = "おはよう";
aisatu2 = "こんばんは";
aisatu3 = "こんにちは";

で、これをinmportしたりしますよね。
そんな感じでPHPも
-parameter.phpファイル-
$aisatu1 = "おはよう";
$aisatu2 = "こんばんは";
$aisatu3 = "こんにちは";

と記述しているんですが、
(私がそうやって作ってしまってる)
これらの$aisatu1などはクラスで定義して使うということでしょうか?

たびたびすいません。
もう一度マニュアルを読んでみます。
Parent: 1456  返信 編集 削除

[1463] クラスメゾット内でのinclude

user: ゆうじ | created: 2004-04-01 01:08
こんばんは。

先ずは、class.php で定義しているのは、
クラスではなく、classという名の関数のようですが、
単に省略されているだけだと思いますので、
オブジェクトの話として書いてます。


> クラス内でこんなことをやっていいのでしょうか?
> 正式なやりかたをお聞きしたく書き込みしました。

正式なやり方はわかりませんが、クラスの外に書かれた
include(parameter.php); は、クラスのスコープ外なので、
クラスに反映されず期待する動作をしてくれないのでしょう。
これは仕方ないことです。

クラスメゾット内で include するのは "アリ" だと思います。


でも、クラスメゾット内でインクルードすると汎用性が失われるので、
共通の変数は、classのインスタンス生成時に
コンストラクタで渡すようにしたほうが、
オブジェクト指向的(?)な設計になって良いかもしれません。

こんな具合。
<?php
// parameter.php
$parameter = array();
$parameter['name'] = 'MyName';
$parameter['age'] = 25;
?>

<?php
// class_A.php
//

class A{
var $varList;
function A($init){
$this->varList = $init;
}
function show(){
var_dump($this->varList);
}
}
?>

<?php
// action.php
//
include ('parameter.php');
include ('class_A.php');

$obj = new A($parameter);
$obj->show(){
?>

---
おっと、返事を打ってる間に話が進んでました。失礼しました。
hamajiさん、ご無沙汰してます。
Parent: 1454  reply: 1466 返信 編集 削除

[1466] なるほど

user: ぽむぞう | created: 2004-04-01 10:49
ゆうじさん、こんにちは。

おっしゃるとおり、クラスという名の関数になっていて、クラスは省いてました。
すいません。

かなり参考になりました。

PHP初心者&オブジェクト指向初心者で四苦八苦していたところです。

hamajiさんのクラスの継承につきましても、勉強になりました。

お忙しいところ、皆様ありがとうございました☆
Parent: 1463  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 648 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑