Laravel 4 헬퍼 및 기본 기능에 대한 모범 사례?
Laravel 4에서 전역 함수를 배치하는 가장 좋은 장소를 이해하려고합니다. 예를 들어 날짜 형식. 나는 정면이 너무 모듈식이 기 때문에 정면을 만드는 것이 그만한 가치가 있다고 생각하지 않습니다. 라이브러리 폴더를 만들고 클래스를 저장하는 방법에 대한 기사를 읽었지만 간단한 기능에는 많은 것 같습니다. 블레이드 템플릿에서 이와 같은 '도구'를 사용할 수 없어야합니까?
이와 같은 모범 사례는 무엇이며 블레이드 템플릿에서 어떻게 사용할 수 있습니까?
추악하고 게으르고 끔찍한 방법 :의 끝에 새 기능을 bootstrap/start.php
추가하고 include('tools.php')
새 파일에 넣으십시오.
깨끗한 방법 : 라이브러리를 만듭니다. 그렇게하면 실제로 사용할 때만 자동로드됩니다.
- 크리에이트
libraries
당신의 내부에 폴더를app
폴더 - 라이브러리 파일을 작성하고 클래스를 작성하고 정적 함수를 추가하십시오.
- 옵션 1 : 편집 하여 배열
start/global.php
에 추가app_path().'/libraries'
합니다ClassLoader::addDirectories(
. - 옵션 2 : 편집 하여 배열
composer.json
에 추가"app/libraries"
합니다autoload
. 운영composer dump-autoload
- 뷰에서 클래스와 정적 함수를 호출하십시오.
global.php
파일 에서 인용 한 옵션 정보
Composer를 사용하는 것 외에도 Laravel 클래스 로더를 사용하여 컨트롤러와 모델을로드 할 수 있습니다. Composer를 업데이트하지 않고 모든 클래스를 "글로벌"네임 스페이스에 유지하는 데 유용합니다.
Laravel 클래스 로더가 등록 된 디렉토리에서 클래스를 자동으로 검색하는 옵션 ( 옵션 1 , 더 쉬움)과 Composer는 모든 클래스를 기록하지만 업데이트 한 후에 만 ( 옵션 2 ) 성능을 향상시킬 수있는 두 옵션을 결합 할 수 있습니다.
이 작업을 수행하는 방법은 /app
Laravel 4 프로젝트 루트의 디렉토리에 새 폴더를 만드는 것 입니다. 그런 다음이 폴더를 /app/start/global.php
파일 의 첫 번째 배열에 추가하십시오 .
<?php
ClassLoader::addDirectories(array(
app_path().'/commands',
app_path().'/controllers',
app_path().'/models',
app_path().'/database/seeds',
app_path().'/classes', // This line is the one I've added.
));
새 /app/classes
폴더 내의 폴더 구조가 사용자 이름 지정 규칙을 따르는 한. Laravel 4는이 폴더 내의 모든 클래스 / 파일을 자동로드합니다. 이런 식으로 작곡가 파일을 파거나 작곡가 명령을 실행할 필요가 없습니다.
이것이 모범 사례인지 확실하지 않지만 확실히 작동합니다.
다음 /app/classes/Helpers/Helper.php
과 같은 간단한 파일을 만든 경우 :
<?php namespace Helpers;
class Helper {
public static function helloWorld()
{
return 'Hello World';
}
}
당신이해야 할 일은 전화 Helpers\Helper::helloWorld();
/app/config/app.php
파일 에서이 헬퍼 클래스의 별명을 지정할 수도 있습니다 . aliases
배열 끝에 다음과 같은 것을 추가하십시오 .
'Helper' => 'Helpers\Helper'
Laravel의 helpers.php 방법은 composer.json ( https://github.com/laravel/framework/blob/master/composer.json ) 의 "파일"에 추가하는 것입니다 :
"autoload": {
"classmap": [
...
],
"files": [
"app/libraries/helpers.php"
],
},
내가하는 일은 작은 클래스 (클래스 당 몇 가지 메소드, 메소드 당 한 줄, 모든 것에서 확장 된 모든 것 및 DRY)를 만드는 것입니다.
class ExtendedCarbon extends Carbon\Carbon {
public function formatDDMMAAAA($date)
{
/// format and return
}
}
앱 / 라이브러리에 저장하고 composer.json에 추가하십시오.
"autoload": {
"classmap": [
...
"app/libraries",
...
],
},
실행
composer dump
그런 다음 필요할 때마다 사용하십시오
$formatted = (new ExtendedCarbon)->formatDDMMAAAA($date);
리팩토링에 대한이 비디오를보십시오 : http://www.youtube.com/watch?v=DC-pQPq0acs
By the way, I'm kind of sure it was just an example, but you might not need a helper to format dates, since all dates in Laravel are instances of Carbon (https://github.com/briannesbitt/Carbon) and it has loads of methods to format date and time.
You can also use View::share()
together with closures to achieve this - I just posted about this: http://www.develophp.org/2014/07/laravel-4-blade-helper-functions/
Added benefit: You don't need to create an extra class and also keep the global namespace clean.
'IT박스' 카테고리의 다른 글
CSS로 읽기 전용 속성의 스타일을 지정하는 방법은 무엇입니까? (0) | 2020.06.14 |
---|---|
package.json 버전을 자동으로 업데이트 (0) | 2020.06.13 |
C ++을 LR (1) 파서로 파싱 할 수없는 이유는 무엇입니까? (0) | 2020.06.13 |
Rails 3 속성이 변경되었는지 확인 (0) | 2020.06.13 |
Twitter Bootstrap 툴팁의 너비와 높이를 어떻게 변경합니까? (0) | 2020.06.13 |