У меня есть файл класса: мы будем называть его class.php . Функциональность этого заключается в том, чтобы захватить информацию из ini- файла (да, я разместил вопрос о безопасности и получил большое предложение использовать либо файл конфигурации, либо ini-файл для хранения информации БД).
По сути, мой класс таков:
<?php class myClass { public function getAttached() { $file = "../../myFile.ini"; if (!$settings = parse_ini_file($file, TRUE)) throw new exception('Unable to open ' . $file . '.'); $hoost = $settings['mysqli']['default_host']; $useer = $settings['mysqli']['default_user']; $pazz = $settings['mysqli']['default_pw']; $dbs = $settings['mysqli']['default_db']; $con = mysqli_connect($hoost ,$useer, $pazz, $dbs); return $con; } } $obj = new myClass(); $obj->getAttached(); $vals = $obj->getAttached(); //echo $vals; //didn't know if I should echo this or not. ?>
Я хочу вызвать это в моем файле somePage.php, чтобы сделать мое соединение «mysqli» и перейти оттуда …
Я попробовал это:
require_once('class.php'); getAttached();
Очевидно, что это не сработало (я знал, что это не будет, но я все равно сделал это, чтобы увидеть, возможно ли это), так что – как я могу вызвать эту функцию из моего файла класса на обычной php-странице?
Любые мысли были бы оценены. Заранее спасибо.
Вам нужно сделать экземпляр класса перед вызовом функций, поскольку они не являются статическими.
require_once('class.php'); $myClass = new myClass(); $myClass-> getAttached();
или, как я уже сказал выше, вы можете сделать функцию статической.
public static function myFunction() { //etc... }
Затем, чтобы позвонить, вы будете использовать:
require_once('class.php'); myClass::getAttached();
Вы должны сначала инициировать свой класс, как и вы, в файле class.php:
$myclass = new myClass(); $myClass->getAttached();
Обратите внимание: если ваш метод можно использовать без какого-либо отношения к вашему классу, вы можете сделать его статическим :
public static function getAttached() { // ... }
И используйте его без необходимости создавать свой класс:
myClass::getAttached();
Ваш getAttached()
в myClass, создайте экземпляр для класса и вызовите
функция
$call = new myClass(); $call->getAttached();
Даны ответы правильные, но если вы сохраните свой файл класса, как вы разместили, у вас есть объект уже в $obj
поэтому нет необходимости создавать новый. Если это просто временно, вы можете игнорировать мой пост.
Еще кое-что:
$obj->getAttached(); // this line is not needed, as you call this function in next line $vals = $obj->getAttached();