IT박스

Laravel 4 헬퍼 및 기본 기능에 대한 모범 사례?

itboxs 2020. 6. 13. 19:36
반응형

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 ) 성능을 향상시킬 수있는 두 옵션을 결합 할 수 있습니다.


이 작업을 수행하는 방법은 /appLaravel 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.

참고URL : https://stackoverflow.com/questions/17088917/best-practices-for-laravel-4-helpers-and-basic-functions

반응형