I am fairly new to PHP OOP and I can't seem to get my class files to require correctly. Whenever I attempt to require them I get a fatal error. Furthermore, phpstorm says my classes are undefined. The Path to location shows up as valid as phpstorm isn't saying path not found. But when run the classes can't be found.
ToyPlansV1.0/TestMain.php --> This class calls setup on the Test class
ToyPlansV1.0/includes/DatabaseHandler.php -->Underlying class to be tested
ToyPlansV1.0/includes/TestClasses/DBHandlerTest.php -->This class is the Test class
Contents of TestMain.php
<?php
require ("includes/TestClasses/DBHandlerTest.php");
$DBTest = new DBHandlerTest();
$DBTest.Setup();
?>
Contents of DBHandlerTest.php
<?php
namespace includes\TestClasses;
require("../DatabaseHandler.php");
class DBHandlerTest {
protected $DB;
protected function Setup(){
$this->$DB = new DatabaseHandler();
}
}
The errors I get when running TestMain.php are:
require(../DatabaseHandler.php): failed to open stream: No such file or directory in C:\wamp\www\ToyPlansV1.0\includes\TestClasses\DBHandlerTest.php on line 3
Fatal error: require(): Failed opening required '../DatabaseHandler.php' (include_path='.;C:\php\pear') in C:\wamp\www\ToyPlansV1.0\includes\TestClasses\DBHandlerTest.php on line 3
PHP Fatal error: require(): Failed opening required '../DatabaseHandler.php' (include_path='.;C:\php\pear') in C:\wamp\www\ToyPlansV1.0\includes\TestClasses\DBHandlerTest.php on line 3
Any ideas where I am going wrong / how to fix the require paths?
EDIT updated code, nearly working.
<?php
//require ("includes/TestClasses/DBHandlerTest.php");
require(__DIR__.'/includes/TestClasses/DBHandlerTest.php');
use includes\TestClasses\DBHandlerTest As DBHandlerTest;
$DBTest = new DBHandlerTest();
$DBTest.Setup();
?>
<?php
namespace includes\TestClasses;
require(__DIR__.'/../DatabaseHandler.php');
use includes\DatabaseHandler As DatabaseHandler;
class DBHandlerTest
{
protected $DB;
public function Setup()
{
$this->$DB = new DatabaseHandler();
}
}