2016-09-06 6 views
1

誰でも私の名前空間とUserFrosting環境を手早く手に入れることができますか?UserFrostingの別のクラス内からconfig変数にアクセスする方法は?

私の問題について説明するために、私はUserFrosting内のデータからPDFドキュメントを作成するためにTCPDFを使用しています。私はUserFrosting名前空間にカスタムクラスMyPDFを作成しましたので、UF名前空間内に$pdf = new MyPDF(blahblah);と入力してPDFを作成するとうまくいきます。

問題がMyPDFクラス自体である - 私はUFから設定VARSを参照できるようにする必要があると私はそれを行うことができますかわからない - すなわち:

Iから configにアクセスするにはどうすればよい
namespace UserFrosting; 

class MyPDF extends \TCPDF_TCPDF { 

    public function Header() { 
     $image_location = $this->_app->config('upload.path') 

MyPDF以内? :?:

class MyPDF extends \TCPDF_TCPDF { 

public function Header() { 
    $ufapp = new UFModel(); 
    $image_location = $ufapp->config('upload.path') 

を...しかし、何のサイコロ:

私が試したしました。私はこのエラーを取得しています:

Cannot instantiate abstract class UserFrosting\UFModel 

答えて

1

$appは、アプリケーション全体が実行されるグローバルインスタンスのちょうどUserFrostingです。 UserFrostingSlim\Slimを拡張するので、あなたは静的にgetInstance() methodを使用してアクセスすることができます

$app = UserFrosting::getInstance();

より良い方法は、しかし、実際にあなたのMyPDFコンストラクタに$appを渡すことであろう。しかし、あなたの状況や他の場所ではMyPDFを使用している場合、それはより難しいかもしれません。

+0

ありがとう@alexw - 何とか簡単な解決策があると思いました!:) – nockieboy

0

これは誤りで書かれています:あなたは抽象クラスをインスタンス化することはできません。 UFModelから拡張されたクラスを作成し、このクラスのすべての抽象メソッドを実装します。例えば

あなたUFModelクラスは次のようになります場合、:今、あなたはnewを使用してオブジェクトを作成することができ

<?php 

class MyModel extends UFModel 
{ 
    public function getValue() 
    { 
     return 'exampleValue'; 
    } 
} 

<?php 

abstract class UFModel 
{ 
    abstract public function getValue(); 
} 

あなたは、このクラスを拡張し、すべての抽象メソッドを実装するクラスを作成する必要がありますオペレータ:

<?php 

//... 
$ufapp = new MyModel(); 
//... 

More about abstract classes in PHP

+0

しかし、MyPDFクラスはTCPDF_TCPDFを拡張する必要があります。 MyPDFはUserFrosting \ BaseControllerクラスを拡張したクラス内でインスタンス化されています - '$ pdf = new MyPDF(PDF_PAGE_ORIENTATION、PDF_UNIT、PDF_PAGE_FORMAT、true、 'UTF-8'、false);'これは申し訳ありませんが、質問が明らかでない場合:( – nockieboy

+0

エラーは、 'MyFDF'クラスではなく、' UFModel'をインスタンス化しようとしています。 – aslawin

+0

ええ、それについて申し訳ありません - 私は解決策を見つけようとしていました。問題は、私が 'new MyPDF()'を呼び出すクラスのインスタンスである$ appにアクセスする必要があるということです。それがなければ、 'config []'変数にアクセスすることはできません。 – nockieboy

関連する問題