2011-07-31 21 views
2

私はいくつかのPHP開発をしようとしていますが、別のPHPファイルでクラスを参照する方法を理解できません。私はCIをMVCフレームワークとして使用しています。「Application」の下に、ドメイン固有のオブジェクトを配置する「domain」という名前のフォルダを作成しました。PHPでクラスを参照するにはどうすればよいですか?

「User.php」というファイルに定義されている「user」というクラスがあります。だから、 'ドメイン/ User.php'

私はこのような別のPHPファイルにこのクラスを参照しようとしています:

<?php 

require('domain/User.php'); 

.. 

?> 

これは、このエラーを吹く:

Failed opening required 'domain/User.php' (include_path='.:/usr/lib/php')

をので、明確に、私はこれがPHPでどのように行われているのかわかりません。だから誰かが私を助けることができますか?

ありがとうございます!

+2

これは、ファイルが見つかりませんでした。どちらかのパスが間違っているか、検索パスが間違っています。また、権限が間違っている可能性もあります。 –

+0

私はエラーメッセージが私を捨てているものだと思う。 usre/lib/phpの場所を探しているようです。私はアクセス許可をチェックし、誰もが読み取りアクセス権を持っています。 CIはおそらくURLを経路変更する必要がありますか? – Nick

答えて

0

正しいパスを参照していることを確認する必要があります。あなたが新しいCIコントローラ(コアCI_Controllerを拡張すなわちコントローラ)を作成している場合は、簡単に使用することによってこの問題を解決することができます

include (APPPATH . 'domain/User.php');

をそうしないと、現在の絶対パスを見つけることができます使用してファイル:あなたはあなたが使用している現在のファイルへの相対たい外部どんなファイル参照できるようにすること

$current_path = dirname(__FILE__); 

include ($current_path . '../domain/User.php'); 

これで、すべての外部コントローラとメソッドを問題なく参照できます。あなたが外部ファイルにfunction_a()を実行したい場合は、使用する必要があるだろう:

$this->user = new User(); 
$this->user->function_a(); 

あなたのコード内の重複を避けるために__construct関数にこれらの負荷を置くことができます。

+0

恐ろしいです。私はdirname(__ FILE__)を使って現在のコンテキストを調べました。私は先導的な "/" – Nick

0

ファイルは、(予想される場所に)存在しない可能性が最も高いです。

まず、現在のファイルの場所を把握する必要があります。これを行うには、requireの前にecho __FILE__;を使用してください。実際には、domain/User.phpが予想される場所にあることを確認してください。

ただし、あなたのインクルードがまったく異なる場所にある場合は、PHP用に適切なinclude_pathを設定する必要があります。 php.iniファイルの設定を調整することでこれを行うことができます。

関連する問題