2010-04-11 4 views
0

PHP 클래스에서 다른 함수들이 그냥있는 사람을 공유require_once를 외부 바르 내가 내 PHP 클래스에서 필요로하고 내 클래스의 모든 기능을 가진 사람 공유하는 몇 가지 바르와 외부 파일이

vars.inc :

<?php 
$a = 1; 
?> 

class.php :

<?php 
class A{ 
    public function __construct(){ 
    require_once("vars.inc"); 
    } 
    public function aB{ 
    echo $a; 
    } 
} 
?> 

을했지만 작동하지 않습니다 다음 $는 VAR은 정의되지 않은

어떻게해야합니까? 당신은 클래스 변수에 할당하지 않는 한

감사 기능의 모든

답변

1

변수는 지역 범위에 존재한다. 당신이 포함 된 페이지에서이 있던 경우에

예를 들어, :

<?php 
$myvariable = 'hello'; 
?> 

는 그런 다음 클래스는 클래스 변수에 할당 할 $this를 사용해야합니다.

myvariable = $ myvariable; } 공개 함수 aB { echo $ myvariable; } } ?>

이 변수 범위에 대한 자세한 내용은 manual를 참조하십시오.

+0

감사합니다. 작동하지만 var trough $ this-> var을 검색해야합니다. 안녕! – frx08

0

범위 문제입니다. 어쩌면 이것은 더 좋을 것입니다 :

<?php 
class A{ 
    protect $a; 
    public function __construct(){ 
    require_once("vars.inc"); 
    $this->a = $a; 

    } 
    public function aB{ 
    echo $this->a; 
    } 
} 
?> 
+0

-1. 이것은 작동하지 않을뿐만 아니라 ($ a는 __construct()가 발생하면 사라지지만) 전역의 사용 빈도를 낮추어줍니다. 포함 된 페이지는 포함 된 페이지에서 함수를 정의하지 않는 한 포함 된 범위를 상속합니다.이 경우 함수는 전역입니다. 또한, 내 의견을 낮출 필요가 없습니다. –

+0

당신은 빨리 downvote했다. 당신이 기다렸다가 내 대답을 확장하고 더 나은 대안을 제공하는 것을 보았을 것입니다. –

+0

하지만 초기 코드가 잘못되었습니다. __construct에 필요한 경우 구조의 로컬 변수가됩니다. 첫 번째 코드가 작동하려면 vars.inc 파일이 클래스 외부에서 필요합니다. – AntonioCS

0

이것은 일반적으로 나쁜 습관입니다. 생성자 또는 메서드를 통해 클래스에 변수를 제공하거나 변수를 보유하는 Static 클래스 또는 해당 값을 보유 할 전역 적으로 액세스 가능한 변수를 만듭니다. 그것은 당신의 코드에 달려 있으며 정확하게하려고하는 것입니다.