2014-07-26 5 views
1

이것이 작동하지 않는 이유는 확실하지 않습니다. 내 .env.php 파일에 설정된 상수에 액세스 할 수 있기를 원하지만 NetBeans에서 getenv 함수가 인식되지 않는다는 오류가 표시됩니다.클래스 내부에서 호출하는 환경 변수가 작동하지 않습니다.

다음은 생성자에서 클래스 값을 설정 내 코드

<?php 

class Blah extends Eloquent { 
... 
protected $connection = getenv('DB_NAME'); 
} 
+0

당신이 '작동하지 않는'무엇을 의미합니까? 어떤 PHP 버전을 실행하고 있습니까? PHP 5.6이 될 때까지는 일반 표현식에 대한 속성 정의를 설정할 수 없습니다. – halfer

답변

4

입니다.

class Blah extends Eloquent 
{ 
    protected $connection = null; 

    function __construct() { 
     $this->connection = getenv('DB_NAME'); 
    } 
} 
+1

그냥 질문입니다. __construct()는 부모 클래스에 어떤 방식 으로든 영향을 줍니까? – user3813559

+0

다릅니다. 부모 클래스 생성자가 자동으로 호출되지 않으면 parent :: __ construct(); 그것을 부르는 것. 변수 이름과 범위에 주목하십시오. 부모에서 선언 한 변수를 하위 변수로 덮어 쓸 수 있습니다. $ connection이 Eloquent에 존재해야한다면, 당신은 Blah에서 그것을 다시 선언 할 것입니다. –

0
protected $connection = getenv('DB_NAME'); 

그 코드가 잘못되었습니다. 그런 클래스 속성을 선언 할 수 없습니다.

...하지만이 초기화는 상수 값이어야합니다 - 즉,이 컴파일시에 평가 될 수 있어야 순서대로 런타임 정보에 의존해서는 안 평가하는 [0 ]

[0] http://php.net/manual/en/language.oop5.properties.php

+0

이것은 버전 5.5까지 사실입니다. PHP 5.7부터는 상수와 함수로 작동합니다. –

관련 문제