나는 내부 클래스를 사용하는 클래스 뒤에 선언 된 클래스에 메소드가있는 다른 클래스의 메소드 내부에서 클래스의 메소드를 호출 할 수 있습니다.선언하기 전에 PHP 클래스를 사용하십시오.
Database.php :
class Database{
modifyUser($field,$change){
global $logging;
if($database->query('MYSQL QUERY')){
$logging->modifyUser($field,$change);
}
}
}
$database = new Database;
Logging.php : 내가 당신에게 예를 보여 드리죠
class Logging{
modifyUser($field,$change){
global $database;
$database->query('Mysql Query for Logging');
}
}
$logging = new Logging;
이제 문제는 만약이 같은 포함 된 파일에 사용 상위 클래스 :
user.php
include('database.php');
include('logging.php');
php는 클래스로 아직 선언되지 않은 $ logging variable을 사용하는 오류를 보여줍니다. 내가 같이 변경하는 경우 :
user.php
include('logging.php');
include('database.php');
같은 오류 만 $ 데이터베이스에 대한; 나는 PHP가 시퀀스와 충돌하지 않는다는 것을 어떻게 사용하는지 모른다.
,이 중 하나, 당신이 대신 전역 변수를 사용하는 autoloading을 사용할 수 있습니다, 또한
를로드 할 것이다 당신이 include_once 문/require_once를, 파일이 필요하므로 처음에만 사용할 수있는 모든의
전역 변수가 필요없는 다른 솔루션을 생각해보십시오. 클래스를 하나의 파일에 넣고'$ logging = new Logging()'과'$ database = new Database()'를 include 아래에 위치시킬 수도있다. –
Database 클래스의 $ database라는 이름의 개체를 만듭니다. $ database라는 또 다른 전역 변수를 정의했습니다. $ logging에 대해서도 같은 일이 일어나고 있습니다. 그들에게 별도의 이름을주십시오. 동일한 클래스에있는 다른 함수 내의 메소드에 액세스하려면 범위 분석 연산자를 사용할 수 있습니다. 예를 들면. $ this :: query(); – Debashis
'if (! instanceof ...)' –