>백엔드 개발 >PHP 튜토리얼 >PHP의 인기 있는 개발 프레임워크 Laravel_php 기술에 대한 포괄적인 해석

PHP의 인기 있는 개발 프레임워크 Laravel_php 기술에 대한 포괄적인 해석

WBOY
WBOY원래의
2016-05-16 20:06:241547검색

Laravel의 주요 기술 기능:

1. Bundle은 Laravel의 확장 패키지의 조직 형태 또는 이름입니다. Laravel의 확장 패키지 저장소는 매우 성숙하여 애플리케이션에 확장 패키지(번들)를 쉽게 설치할 수 있도록 도와줍니다. 확장 패키지(번들)를 다운로드하여 번들 디렉터리에 복사하거나 명령줄 도구 "Artisan"을 통해 자동으로 설치할 수 있습니다.
2. Laravel에는 이미 고급 PHP ActiveRecord 구현 세트인 Eloquent ORM이 있습니다. 관계의 양쪽에 "제약"을 쉽게 적용할 수 있으므로 데이터를 완벽하게 제어하고 ActiveRecord의 모든 편리함을 누릴 수 있습니다. Eloquent는 Fluent의 쿼리 빌더(query-builder)의 모든 메소드를 기본적으로 지원합니다.
3. 애플리케이션 로직은 컨트롤러에서 구현되거나 경로 명령문에 직접 통합될 수 있으며 구문은 Sinatra 프레임워크와 유사합니다. Laravel의 디자인 철학은 개발자에게 최대의 유연성을 제공하여 매우 작은 웹사이트를 만들고 대규모 엔터프라이즈 애플리케이션을 구축할 수 있도록 하는 것입니다.
4. 역방향 라우팅은 경로 이름을 통해 링크(URI)를 생성하는 기능을 제공합니다. 경로 이름을 사용하면 Laravel이 자동으로 올바른 URI를 생성합니다. 이렇게 하면 언제든지 경로를 변경할 수 있으며 Laravel은 모든 관련 링크를 자동으로 업데이트합니다.
5. Restful Controller는 GET 및 POST 요청 논리를 구별하는 선택적 방법입니다. 예를 들어, 사용자 로그인 로직에서 로그인 페이지를 얻는 서비스를 처리하기 위해 get_login() 액션을 선언하고, 양식에서 게시된 데이터를 확인하기 위해 post_login() 액션도 선언합니다. 검증 후 결정은 다음과 같습니다. 로그인 페이지나 콘솔로 리디렉션되도록 만들어졌습니다.
6. 클래스 자동 로딩은 클래스 로딩을 단순화합니다. 앞으로는 더 이상 자동 로딩 구성 테이블과 불필요한 컴포넌트 로딩을 유지할 필요가 없습니다. 라이브러리나 모델을 로드하고 싶을 때 즉시 사용하면 Laravel이 자동으로 필요한 파일을 로드합니다.
7. View Composer는 본질적으로 View가 로드될 때 자동으로 실행되는 코드 조각입니다. 가장 좋은 예는 블로그 측면에 있는 임의 기사 추천입니다. "뷰 어셈블러"에는 임의 기사 추천을 로드하는 논리가 포함되어 있습니다. 이러한 방식으로 콘텐츠 영역의 보기만 로드하면 Laravel이 수행합니다. 다른 것들은 자동으로 완료됩니다.
8. 역방향 제어 컨테이너(IoC 컨테이너)는 새로운 개체를 생성하고 언제든지 개체를 인스턴스화하며 싱글톤 개체에 액세스할 수 있는 편리한 방법을 제공합니다. 역제어(IoC)는 외부 라이브러리(라이브러리)를 로드할 필요가 거의 없고, 코드 내 어디에서나 이러한 객체에 액세스할 수 있으며, 복잡하고 중복되는 코드 구조를 견딜 필요가 없음을 의미합니다.
9. 마이그레이션은 버전 관리 도구와 비슷하지만 데이터베이스 패러다임을 관리하고 Laravel에 직접 통합됩니다. "Artisan" 명령줄 도구를 사용하여 "마이그레이션" 지침을 생성하고 실행할 수 있습니다. 팀 구성원이 데이터베이스 패러다임을 변경하면 버전 제어 도구를 통해 현재 프로젝트를 쉽게 업데이트한 다음 "마이그레이션" 명령을 실행할 수 있습니다. 데이터베이스는 이미 최신 상태입니다.
10. 단위 테스트는 Laravel에서 매우 중요한 부분입니다. Laravel 자체에는 수정 사항이 다른 부분의 기능에 영향을 미치지 않도록 보장하는 수백 개의 테스트 사례가 포함되어 있습니다. 이것이 Laravel이 업계에서 가장 안정적인 버전으로 간주되는 이유 중 하나입니다. Laravel은 또한 자신의 코드를 쉽게 단위 테스트할 수 있도록 편리한 기능을 제공합니다. 모든 테스트 케이스는 Artisan 명령줄 도구를 통해 실행할 수 있습니다.
11. 자동 페이지 매김 기능은 관련 없는 페이징 구성 코드가 비즈니스 로직에 많이 혼합되는 것을 방지합니다. 편리함은 현재 페이지를 기억할 필요가 없고 데이터베이스에서 전체 항목 수를 가져온 다음 제한/오프셋을 사용하여 선택한 데이터를 가져온 다음 마지막으로 'paginate' 메소드를 호출하여 Laravel이 출력하도록 한다는 것입니다. 각 페이지를 지정된 보기( 보기)에 연결하면 Laravel이 자동으로 모든 작업을 완료합니다. Laravel의 자동 페이징 시스템은 구현 및 수정이 용이하도록 설계되었습니다. Laravel은 이러한 작업을 자동으로 처리할 수 있지만 해당 메소드를 호출하고 페이징 시스템을 수동으로 구성하는 것을 잊지 마십시오!

몇 가지 작은 예를 들어 설명하겠습니다.
마이크로서비스 및 프로그래밍 인터페이스
Lumen은 단순성에 초점을 맞춘 laravel에서 파생된 마이크로 프레임워크입니다. 고성능 프로그래밍 인터페이스를 통해 마이크로 프로젝트를 보다 쉽고 빠르게 개발할 수 있습니다. Lumen은 최소한의 구성으로 laravel의 모든 중요한 기능을 통합합니다. 코드를 laravel 프로젝트에 복사하여 전체 프레임워크를 마이그레이션할 수 있습니다.

<&#63;php
$app->get('/', function() {
  return view('lumen');
});
$app->post('framework/{id}', function($framework) {
  $this->dispatch(new Energy($framework));
});

HTTP路径
Laravel拥有类似于Ruby on Rails的,快速、高效的路由系统。它可以让用户通过在浏览器上输入路径的方式让应用程序的各部分相关联。

HTTP中间件

Route::get('/', function () { 
  return 'Hello World'; 
});

应用程序可受到中间件的保护——中间件会处理分析和过滤服务器上的HTTP请求。你可以安装中间件,用于验证注册用户,并避免如跨站脚本(XSS)或其它的安全状况的问题。

<&#63;php 
namespace App\Http\Middleware; 
use Closure; 
class OldMiddleware { 
 public function handle($request, Closure $next) { 
  if ($request->input('age') <= 200) { 
     return redirect('home'); 
  } 
  return $next($request);
 }
}

缓存
你的应用程序可得到一个健壮的缓存系统,通过对其进行调整,可以让应用程序的加载更加快速,这可以给你的用户提供最好的使用体验。

Cache::extend('mongo', function($app) { 
  return Cache::repository(new MongoStore);
});

身份验证
安全是至关重要的。Laravel自带对本地用户的身份验证,并可以使用“remember” 选项来记住用户。它还可以让你例如一些额外参数,例如显示是否为活跃的用户。

if (Auth::attempt(['email' => $email, 'password' => $password, 'active' => 1 ], $remember)) { 
  // The user is being remembered... 
}

各种集成
Laravel Cashier可以满足你要开发支付系统所需要的一切需求。除此之外,它还同步并集成了用户身份验证系统。所以,你不再需要担心如何将计费系统集成到开发当中了。

$user = User::find(1);
$user->subscription('monthly')->create($creditCardToken);

任务自动化
Elixir是一个可让我们使用Gulp定义任务的Laravel程序接口,我们可以使用Elixir定义可精简CSS 和JavaScript的预处理器。

elixir(function(mix) { 
  mix.browserify('main.js');
 });


加密
一个安全的应用程序应该做到可把数据进行加密。使用Laravel,可以启用OpenSSL安全加密算法AES-256-CBC来满足你所有的需求。另外,所有的加密值都是由检测加密信息是否被改变的验证码所签署的。

use Illuminate\Contracts\Encryption\DecryptException; 
try { 
  $decrypted = Crypt::decrypt($encryptedValue);
} catch (DecryptException $e) { 
  // 
}

事件处理
应用程序中事件的定义、记录和聆听都非常迅速。EventServiceProvider事件中的listen包含记录在你应用程序上所有事件的列表。

protected $listen = [
 'App\Events\PodcastWasPurchased' => [ 
   'App\Listeners\EmailPurchaseConfirmation',
 ],
];

分页
在Laravel中分页是非常容易的因为它能够根据用户的浏览器当前页面生成一系列链接。

<&#63;php 
namespace App\Http\Controllers; 
use DB; 
use App\Http\Controllers\Controller; 
class UserController extends Controller { 
 public function index() { 
  $users = DB::table('users')->paginate(15);
  return view('user.index', ['users' => $users]);
 }
}

对象关系化映射(ORM)
Laravel包含一个处理数据库的层,它的对象关系化映射被称为Eloquent。另外这个也适用于PostgreSQL。

$users = User::where('votes', '>', 100)->take(10)->get();
foreach ($users as $user) { 
 var_dump($user->name);
}

单元测试
单元测试的开发是一个耗费大量时间的任务,但是它却是保证我们的应用程序保持正常工作的关键。Laravel中可使用PHPUnit执行单元测试。

<php 
use Illuminate\Foundation\Testing\WithoutMiddleware; 
use Illuminate\Foundation\Testing\DatabaseTransactions; 
class ExampleTest extends TestCase { 
 public function testBasicExample() { 
  $this->visit('/')->see('Laravel 5')->dontSee('Rails');
 }
}

待办事项清单
Laravel提供在后台使用待办事项清单(to do list)处理复杂、漫长流程的选择。它可以让我们异步处理某些流程而不需要用户的持续导航。

Queue :: push ( new SendEmail ( $ message ));


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.