我知道这已经件被覆盖过,但我与如何将其应用到我的代码中挣扎。
我正在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
之间没有逗号...从我对文档的理解中,只有当它们中的一个是布尔值时才这样做?
而且为什么$response = $this->image->upload($photo);
意味着postUpload()
什么?那函数upload()
来自Repository,是use
足以让它知道该怎么做?为什么$this->image
意味着什么,$this
是指什么? ImageController
类?是image
在$this->image
派生自protected $image
?
我想我应该在使用Laravel框架之前坚持使用普通的PHP,因为虽然我可以轻松导航到Laravel以创建一个工作应用程序,但似乎阻碍了我遵循最佳实践/体系结构的能力。 AFAIK控制器主要是操纵数据并将其发送到视图或数据库的东西,我不明白为什么它是一个类?
很抱歉的多个问题,我只是很困惑。我在codeacademy上教了自己的php,但是他们的类声明和对象实例很容易遵循,但事实并非如此。如果有人能够向我解释代码,那将非常有帮助。
谢谢!
'$ this'只能指代与使用'$ this'的代码相同的对象/类。每个对象都是它自己的'$ this','$ this'永远不会指向其他外来对象。就像网络的“本地主机” - 每台机器都是自己的本地主机,本地主机无法指向其他地方。 –