PHP에서 사이트 전체 변수를 설정하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/13000

  •  08-06-2019
  •  | 
  •  

문제

나는 다음과 같이 정의하고 싶다. PHP:

$EL = "\n<br />\n";

그런 다음 해당 변수를 내 사이트 전체에서 다음과 같이 "끝선" 표시로 사용합니다.

echo "Blah blah blah{$EL}";

$EL을 한 번(단 1개의 파일에) 정의하고 내 사이트의 모든 페이지에 포함하는 방법은 무엇입니까? ~ 아니다 (이상하게도 거꾸로)를 사용하여 참조해야합니다. global $EL; 모든 페이지 기능에 성명이 있나요?

도움이 되었습니까?

해결책

대부분의 PHP 사이트에는 사이트의 모든 페이지에 포함할 수 있는 파일(헤더라고 함)이 있어야 합니다.헤더 파일에 첫 번째 코드 줄을 넣으면 모든 페이지에 다음과 같이 포함됩니다.

 include 'header.php';

global 키워드 등을 사용할 필요가 없으며 작성한 코드의 두 번째 줄이 작동해야 합니다.

편집하다:아 죄송합니다. 함수 내에서는 작동하지 않습니다...이제 나는 당신의 문제를 봅니다.

편집 #2:좋아, 헤더에 대한 내 원래 조언을 받아들이되 정의하다() 변수보다는요.포함된 후 함수 내부에서 작동합니다.

다른 팁

끊임없는 일처럼 들립니다.기능 보기 정의하다().

PHP5를 사용하고 있나요?__autoload() 함수를 정의하고 일부 상수가 포함된 클래스를 사용하면 필요한 곳에서 이를 호출할 수 있습니다.이것에 대한 유일한 불편한 점은 다음과 같이 좀 더 긴 것을 입력해야 한다는 것입니다.

MyClass::MY_CONST

새로운 줄을 처리하는 방식을 변경하기로 결정한 경우 한 곳에서만 변경하면 된다는 이점이 있습니다.

물론, 가능한 부정적인 점은 추가 함수(__autoload())를 포함하여 호출하고 해당 함수를 실행한 다음(클래스를 참조할 때) 다른 파일(클래스 파일)을 로드한다는 것입니다.그 가치보다 오버헤드가 더 클 수 있습니다.

내가 제안할 수 있는 것은 에코 태그가 필요한 이런 종류의 에코를 피하는 것입니다(예: <br />).좀 더 템플릿과 유사한 것을 설정할 수 있다면 명시적으로 입력하지 않고도 nl을 처리할 수 있습니다.그래서 대신

echo "Blah Blah Blah\n<br />\n";

노력하다:

<?php
if($condition) {
?>
<p>Blah blah blah
<br />
</p>
<?php
}
?>

제가 보기에는 클래스를 호출하거나 함수 내에서 변수를 포함하는 것뿐 아니라 외부에서도 수행할 필요가 없는 많은 작업이 필요하며, 가능하다면 이러한 종류의 상황은 피하는 것이 가장 좋습니다.

이 작업을 수행 define ('el','\n\<\br/>\n'); el.php로 저장하세요.

그런 다음 사용하려는 파일을 포함할 수 있습니다.

에코 '뭔가'.el;// 줄 끝이나 맨 앞에 el을 추가한다는 점에 유의하세요.

이 도움을 바랍니다

참고 < br 뒤에 있는 '\'를 제거해야 합니다. 그렇지 않으면 답변에 br 태그가 표시되지 않습니다...

@svec 그렇습니다. 함수 안에 파일을 포함시키기만 하면 됩니다.이것이 대부분의 소프트웨어가 작동하는 방식입니다.

function myFunc()
 {
require 'config.php';
//Variables from config are available now.
 }

또 다른 옵션은 공용 정적 속성이 있는 객체를 사용하는 것입니다.나는 $GLOBALS를 사용했지만 대부분의 편집자는 $GLOBALS를 자동 완성하지 않습니다.또한 인스턴스화되지 않은 클래스는 어디에서나 사용할 수 있습니다(PHP에 클래스를 사용할 것이라고 알리지 않고도 어디에서나 인스턴스화할 수 있기 때문입니다).예:

<?php

class SITE {
    public static $el;
}

SITE::$el = "\n<br />\n";

function Test() {
    echo SITE::$el;
}

Test();

?>

이것은 출력됩니다 <br />

속성(배열, 문자열, 정수 등) 내에 모든 유형의 값을 넣을 수 있는 반면 상수는 배열을 포함할 수 없으므로 비용 항목보다 처리하기가 더 쉽습니다.

이것은 사용자가 내에게 제안한 것입니다. PhpEd 포럼.

svec에서는 PHP 프레임워크를 사용하세요.그냥 아무거나 - 거기에 많은 것들이 있습니다.이것이 올바른 방법입니다.프레임 워크를 사용하면 응용 프로그램에 대한 단일 진입 점이 있으므로 사이트 전체 변수를 정의하는 것은 쉽고 자연 스럽습니다.또한 헤더 파일을 포함 시키거나 모든 페이지에 사용자가 로그인되어 있는지 확인할 필요가 없습니다. 괜찮은 프레임 워크가이를 수행합니다.

보다:

그 중 하나를 배우는 데 시간을 투자하면 곧 보상을 받을 것입니다.

IIRC의 일반적인 솔루션은 '와 같은 모든 소스 파일에 포함하는 선언이 포함된 일반 파일입니다.상수.inc.php'.여기에서 모든 파일로 가져올 수 있는 다양한 애플리케이션 전반의 변수를 정의할 수 있습니다.

그래도 include 지시문을 제공해야 합니다. 모든 사용하는 단일 소스 파일.여러 언어에 대한 현지화를 제공하기 위해 이 기술을 사용하는 일부 프로젝트도 보았습니다.나는 gettext 방식을 선호하지만 일반 사용자가 이 변형을 사용하는 것이 더 쉬울 수도 있습니다.

편집하다 귀하의 문제에 대해서는 다음을 사용하는 것이 좋습니다. $글로벌[], 보다 예시 #2 자세한 내용은.

그래도 적용할 수 없다면 PHP5 객체를 자세히 살펴보고 필요한 정적 상수를 제공하는 정적 싱글톤을 생성해 보겠습니다(http://www.developer.com/lang/php/article.php/3345121)

세션이 가장 좋은 방법이 될 것입니다. 데이터가 사용자별로 다른 경우에는 구성 파일을 사용하면 됩니다.config.php:

<?php
$EL = "\n<br />\n";
?>

그런 다음 각 페이지에 추가하십시오.

require 'config.php'

그러면 해당 페이지에서 $EL에 액세스할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top