これは前に説明した通りですが、私のコードにどのように適用するのか苦労しています。
LaravelでPHPアプリケーションを開発していますが、私のコードをモジュール化してテスト可能にしたいのです。つまり、私のロジックを私のヘビセットコントローラから引き離し、それらを別々のファイルに分けてコントローラ内から呼び出します。そのようなコントローラ(ImageController
)で
、私はImageRepository.php
にロジック呼びかけていますし、それは次のようになります。
<?php
namespace App\Http\Controllers;
use App\Logic\Image\ImageRepository;
use Illuminate\Support\Facades\Input;
class ImageController extends Controller
{
protected $image;
public function __construct(ImageRepository $imageRepository)
{
$this->image = $imageRepository;
}
public function getUpload()
{
return view('pages.upload');
}
public function postUpload()
{
$photo = Input::all();
$response = $this->image->upload($photo);
return $response;
}
/*public function deleteUpload()
{
$filename = Input::get('id');
if(!$filename)
{
return 0;
}
$response = $this->image->delete($filename);
return $response;
}
*/
}
私の問題は、私はそれを得たとして、私は、このコードがどのように動作するか理解していないです別のソースから入手して理解したいので、私のコードのどこかでこのアーキテクチャを複製することができます。
Route::post('upload_image', ['as' => 'upload-post', 'uses' =>'[email protected]']);
だから私の最初の質問は、私は私のルートで構造関数を呼び出すことはありません:
私のルートは、画像をアップロードする際に、このです。それはpostUpload()
に右に行く。それは意味がないのですか?また、なぜコンストラクト関数がImageRepository
と$imageRepository
の間にカンマを持っていないのですか?私がドキュメントを理解してから、それらのうちの1つがブール値ならば、
また、$response = $this->image->upload($photo);
の意味は、postUpload()
の意味ですか?その機能upload()
はリポジトリから来て、何をすべきかを知るのに十分なuse
ですか? $this->image
の意味は何ですか?$this
は何を指していますか? ImageController
クラスですか? はprotected $image
から派生した$this->image
にありますか?
Laravelフレームワークに移行する前に、通常のPHPで動かなくてはいけないと思うので、Laravelを使って簡単にアプリケーションを作成できますが、ベストプラクティス/アーキテクチャに従うのが難しいようです。コントローラーは主にデータを操作してビューまたはデータベースに送信するものですが、なぜクラスであるのか分かりません。
複数の質問を申し訳ありません。私は非常に混乱しています。私はcodeacademyでphpを教えましたが、そのクラス宣言とオブジェクトインスタンスは非常に簡単です。これはそうではありません。誰かが私にコードを説明することができれば、それは非常に役に立ちます。
ありがとうございました!
'$ this'は、' $ this'を使ったコードがメンバであるのと同じオブジェクト/クラスを参照することしかできません。すべてのオブジェクトはそれ自身の '$ this'であり、' $ this'は他の異物を指すことはできません。それはネットワーキングのための "localhost"のようなものです - すべてのマシンはそれ自身のローカルホストであり、localhostは他の場所を指すことはできません。 –