>php教程 >PHP开发 >Laravel에서 자신만의 클래스 라이브러리를 사용하는 3가지 방법

Laravel에서 자신만의 클래스 라이브러리를 사용하는 3가지 방법

高洛峰
高洛峰원래의
2016-12-27 11:34:521190검색

Composer를 사용하면 많은 기존 라이브러리(packagist.org에 있는 라이브러리 등)를 재사용할 수 있지만 여전히 Composer와 호환되지 않는 일부 패키지나 라이브러리를 사용할 수 있습니다. 또한 특정 프로젝트에서는 특정 클래스 라이브러리를 생성할 수도 있으며 이를 작곡가 패키지로 만들지 않을 수도 있습니다. 이때 우리는 다음과 같은 방법으로 우리 고유의 클래스 라이브러리를 사용할 수 있습니다.

직접 인스턴스화할 수 있는 클래스 추가

프로젝트에서 직접 사용해야 하는 일부 클래스는 다음과 같이 Laravel에 추가할 수 있습니다. 방법

1. 클래스 라이브러리 파일 app/libraries/class/myClass.php
2. 파일 내용을 작성합니다

<span style="font-size: 16px;"><?php<br/>class Message {<br/>    public static function display() {<br/>    }<br/>}<br/>?><br/></span>

app/start/globals.php에 클래스 가져오기 경로 추가

<span style="font-size: 16px;"><?php <br/>ClassLoader::addDirectories(array(<br/>    app_path().&#39;/commands&#39;,<br/>    app_path().&#39;/controllers&#39;,<br/>    app_path().&#39;/models&#39;,<br/>    app_path().&#39;/database/seeds&#39;,<br/>    app_path().&#39;/libaries/class&#39;, // 在这里增加<br/>));<br/>?><br/></span>

composer.json에 자동 로드 디렉터리 추가

<span style="font-size: 16px;">"autoload": {<br/>    "classmap": [<br/>        "app/commands",<br/>        "app/controllers",<br/>        "app/models",<br/>        "app/database/migrations",<br/>        "app/database/seeds",<br/>        "app/tests/TestCase.php",<br/>        "app/libraries/class"   //在这里增加<br/>    ]<br/>},<br/></span>

1. Composer dump-autoload를 실행하여 가져오기 매핑 생성
2. 가져온 클래스를 사용하여 Message::display()

이 방법도 큐 클래스 방식과 관련하여 라라벨의 큐 처리 클래스가 어디에 위치해야 하는지 모르는 분들이 많습니다. 실제로 위의 방식에 따라 앱 디렉터리에 queues 디렉터리를 생성한 후 직접 인스턴스화할 수 있도록 허용합니다.

직접 호출할 수 있는 함수 추가

var_dump() 대신 v()를 사용하는 것을 선호하는 사람들도 있는데 매우 쉽습니다. Laravel에서 이를 수행하려면

1. 함수 파일 app/libraries/function/helper.php
2. 파일 내용을 작성합니다

<span style="font-size: 16px;"><?php <br/>function v($msg){<br/>    var_dump($msg);<br/>}<br/>?><br/></span>

Composer에 파일을 추가하면 자동으로 목록의

<span style="font-size: 16px;">"autoload": {<br/>   "classmap": [<br/>       ...<br/>   ],<br/>   "files": [<br/>       "app/libraries/function/helper.php"<br/>   ],<br/>},<br/></span>

을 가져오거나 프로젝트에 필요한 파일을 표시합니다. app/start/global.php를 열고 마지막에 추가하세요:

<span style="font-size: 16px;">require app_path().&#39;/libraries/function/helper.php&#39;;<br/></span>

개인적으로 이 파일의 로딩 시간을 조절하고 싶다면 두 가지 방법 모두 괜찮다고 생각합니다. filter.php 파일에 다음 콘텐츠를 추가할 수도 있습니다

<span style="font-size: 16px;">App::before( function( $request ) {<br/>    require( "{$GLOBALS[&#39;app&#39;][&#39;path.base&#39;]}/app/libraries/function/helper.php" );<br/>});<br/></span>

프로젝트에서 직접 v('hello world') 함수를 사용하세요.

추가 약간 더 복잡한 클래스 라이브러리

때때로 클래스 라이브러리가 하나의 파일 이상이기 때문에 다음 방법은 여러 파일과 여러 구조를 가진 클래스 라이브러리에 더 적합합니다.

psr0 또는 psr4 표준 디렉토리 구조를 만듭니다.

libraries
    Myapp
        Search (note directory is capitalized)
            Search.php
            SearchFacade.php
            SearchServiceProvider.php
        AnotherLib

Myapp/Search/Search.php의 Search 클래스 네임스페이스는 MyappSearch입니다.

작곡기에서 자동 로드 수정

"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
        "app/libraries",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php"
    ]
    ,
    "psr-0": {
         "Myapp": "app/libraries"
    }
},

프로젝트에서 new MyappSearchSearch()를 사용하여 특정 클래스를 인스턴스화

요약

Laravel은 강제하지 않지만 어떤 방법이 가장 좋은지, 여러 사람이 협력하여 개발할 때 프로젝트 구조를 명확하게 하고 커뮤니케이션 비용을 많이 절약할 수 있는 일정한 표준이 있습니다.

Laravel에서 자신만의 클래스 라이브러리를 사용하는 3가지 방법에 대한 더 많은 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

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