2013-03-28 5 views
0

PHP 함수로 작성된 것처럼 작동하는 Symfony 2 앱 (여러 컨트롤러와 엔티티 전반)에서 사용할 수있는 전역 함수 세트를 갖고 싶습니다. 예를 들면 :Symfony 2 전역 함수

function startsWith($haystack, $needle) { 
    return !strncmp($haystack, $needle, strlen($needle)); 
} 

내가 거기에 이러한 기능을 가진 파일을 만들 수 있지만 각 네임 스페이스에 대해 중복 할 필요가 :

namespace Taggle\TaggleBundle\DependencyInjection; 
namespace Taggle\TaggleBundle\Controller; 

이 처리하는 가장 좋은 방법은 무엇입니까?

+1

왜 다른 네임 스페이스에 대해 복제해야합니까? 전 세계에 선언하십시오. 정적 메서드를 사용하여 클래스로 정의하지 않는 이유는 무엇입니까? – Gerry

+0

전역 네임 스페이스에서 선언하는 방법을 모르겠습니다. 그게 질문입니다. – CaptainStiggz

답변

0

함수 선언이있는 파일이 네임 스페이스를 정의하지 않으면 함수가 전역 네임 스페이스에 선언됩니다.

전역 이름 공간의 함수는 일반 이름으로 다른 네임 스페이스에서 호출 할 수 있습니다.

index.php를

<?php 

namespace Foo\Bar; 

require 'functions.php'; 

foo(); // 'bar' 

<?php 

function foo() { 
    echo 'bar'; 
} 

는 그러나, 나는 일반 기능이 방법을 정의에 대해 추천 할 것입니다 functions.php. 우선 그들은 네임 스페이스 충돌을 일으킬 수있는 전역 네임 스페이스를 오염시키고 두 번째로 정적 메서드를 사용하여 클래스를 선언하는 것이 훨씬 좋습니다. 그렇게하면 자동 로딩 메커니즘의 이점도 누릴 수 있습니다.

+0

감사합니다. 너무 많이 묻지 않는다면 Symfony2 자동 로딩 메커니즘을 사용하기위한 몇 가지 예제 문서를 가르쳐 주시겠습니까? – CaptainStiggz