use Laravel\Surveyor\Analyzer\Analyzer;$analyzer = app(Analyzer::class);// 파일 경로로 해석$result = $analyzer->analyze('/path/to/your/File.php');// 해석된 스코프에 액세스$scope = $result->analyzed();// 클래스 결과에 액세스$classResult = $result->result();
Surveyor는 충실한 타입 시스템을 가지고 있어, PHP의 타입을 구조화하여 다룰 수 있습니다.
use Laravel\Surveyor\Types\Type;// 각종 타입 생성$stringType = Type::string();$intType = Type::int();$boolType = Type::bool();$nullType = Type::null();// 유니온 타입 (string|null 등)$unionType = Type::union(Type::string(), Type::null());// 타입 판정use Laravel\Surveyor\Types\StringType;if (Type::is($returnType, StringType::class)) { // 문자열 타입 처리}
use Laravel\Surveyor\Analyzer\AnalyzedCache;// 디스크 캐시 활성화AnalyzedCache::enableDiskCache(storage_path('surveyor-cache'));// 캐시 클리어AnalyzedCache::clear();
use Laravel\Ranger\Ranger;use Laravel\Ranger\Components;use Illuminate\Support\Collection;$ranger = app(Ranger::class);// 라우트가 발견될 때마다 호출$ranger->onRoute(function (Components\Route $route) { echo $route->uri();});// 모델이 발견될 때마다 호출$ranger->onModel(function (Components\Model $model) { foreach ($model->getAttributes() as $name => $type) { // 속성명과 타입 처리 }});// Enum이 발견될 때마다 호출$ranger->onEnum(function (Components\Enum $enum) { //});// 브로드캐스트 이벤트가 발견될 때마다 호출$ranger->onBroadcastEvent(function (Components\BroadcastEvent $event) { //});// 모든 라우트가 수집된 후 한 번만 호출$ranger->onRoutes(function (Collection $routes) { //});// 모든 모델이 수집된 후 한 번만 호출$ranger->onModels(function (Collection $models) { //});// 애플리케이션 전체를 워크스루하여 콜백 발화$ranger->walk();
laravel/roster는 프로젝트에 어떤 Laravel 에코시스템 패키지가 설치되어 있는지를 검출하는 도구입니다. 패키지 개발자나 도구 작성자가 “이 프로젝트는 Inertia를 사용하고 있는가?”, “Livewire의 버전은?”과 같은 정보를 간단히 얻을 수 있습니다.
Laravel Boost는 roster를 사용하여 설치된 패키지 구성을 파악하고, AI 에이전트(GitHub Copilot이나 Claude 등)용의 가이드라인과 스킬의 생성을 자동 조정합니다. “이 프로젝트는 Inertia를 사용하고 있는가?”, “Livewire는 들어 있는가?”라는 정보를 바탕으로, 적절한 가이드라인 파일을 선택하여 AI 에이전트에 제공합니다.
surveyor · ranger · roster는 Laravel 에코시스템에서의 프로그램에 의한 코드 해석의 새로운 기반을 제공합니다.이 패키지들은 주로 패키지 개발자 · 도구 작성자를 대상으로 하고 있으며, 최종 사용자가 직접 사용하는 것은 아닙니다. 하지만 Laravel Boost처럼 Laravel 공식 도구의 내부에서도 적극적으로 활용되고 있으며, 향후 에코시스템 확대가 기대됩니다.