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().'/commands',<br/> app_path().'/controllers',<br/> app_path().'/models',<br/> app_path().'/database/seeds',<br/> app_path().'/libaries/class', // 在这里增加<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().'/libraries/function/helper.php';<br/></span>
개인적으로 이 파일의 로딩 시간을 조절하고 싶다면 두 가지 방법 모두 괜찮다고 생각합니다. filter.php 파일에 다음 콘텐츠를 추가할 수도 있습니다
<span style="font-size: 16px;">App::before( function( $request ) {<br/> require( "{$GLOBALS['app']['path.base']}/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 중국어 웹사이트를 주목하세요!