Обучение/Помощь новичкам | Ооп помощь.
Тема закрыта by
crew_
Всем добра. Как сделать чтобы например в других файлах/функциях вне класса, можно было вызывать другой класс без его явного обьявления. P.S. Понимаю, может хрень сморозил, смотрите по примеру если не понятно.
Пример:
<?php
file: /class/Core.class.php
spl_autoload_register(function($className)
{
$inc = $_SERVER['DOCUMENT_ROOT'];
$addr = $inc .'/class/'. $className .'.class.php';
if (!file_exists($addr))
{
die('Error load class: '. $addr);
}
else
{
require_once($addr);
}
});
class Connect
{
public function __construct($dbHost, $dbPort, $dbName, $dbUser, $dbPass)
{
$inc = $_SERVER['DOCUMENT_ROOT'];
define("DBHOST", $dbHost);
define("DBPORT", $dbPort);
define("DBNAME", $dbName);
define("DBUSER", $dbUser);
define("DBPASS", $dbPass);
$dbClass = $inc .'/class/Db.class.php';
if (!file_exists($dbClass))
{
die('Error load Db class!');
}
else
{
require_once ($dbClass);
}
}
}
file: /class/User.class.php
class User
{
public $user = 'bla';
function __construct(){}
}
file: /index.php
require_once('class/Core.class.php');
$User = new User();
echo $User -> user;
У меня приблизительно так. Как можно по другому сделать?
Пример:
<?php
file: /class/Core.class.php
spl_autoload_register(function($className)
{
$inc = $_SERVER['DOCUMENT_ROOT'];
$addr = $inc .'/class/'. $className .'.class.php';
if (!file_exists($addr))
{
die('Error load class: '. $addr);
}
else
{
require_once($addr);
}
});
class Connect
{
public function __construct($dbHost, $dbPort, $dbName, $dbUser, $dbPass)
{
$inc = $_SERVER['DOCUMENT_ROOT'];
define("DBHOST", $dbHost);
define("DBPORT", $dbPort);
define("DBNAME", $dbName);
define("DBUSER", $dbUser);
define("DBPASS", $dbPass);
$dbClass = $inc .'/class/Db.class.php';
if (!file_exists($dbClass))
{
die('Error load Db class!');
}
else
{
require_once ($dbClass);
}
}
}
file: /class/User.class.php
class User
{
public $user = 'bla';
function __construct(){}
}
file: /index.php
require_once('class/Core.class.php');
$User = new User();
echo $User -> user;
У меня приблизительно так. Как можно по другому сделать?
В гугле singleton забей. А вообще я у себя менеджер модулей (классов) написал
Dark_AKC , https://habrahabr.ru/post/31375/ такое?
Avenax , ага. Надо чтобы доступ типа был глобально. Ну то есть чтобы в других файлах и функциях вне класса не писать 100500 раз $var = new Class(); Есть же какие-то варианты?
_TURBO_ (30.10.2017 в 11:15)
Avenax , ага. Надо чтобы доступ типа был глобально. Ну то есть чтобы в других файлах и функциях вне класса не писать 100500 раз $var = new Class(); Есть же какие-то варианты?
Avenax , ага. Надо чтобы доступ типа был глобально. Ну то есть чтобы в других файлах и функциях вне класса не писать 100500 раз $var = new Class(); Есть же какие-то варианты?
Да, статические свойства и методы
может наследование? или статические методы?
_TURBO_ ,http://php.net/manual/ru/language.oop5.static.php
Avenax , Внимание
В PHP 7, возможность вызова нестатического метода статически объявлена устаревшей и вызовет ошибку уровня E_DEPRECATED и в дальнейшем может быть удалена.
В PHP 7, возможность вызова нестатического метода статически объявлена устаревшей и вызовет ошибку уровня E_DEPRECATED и в дальнейшем может быть удалена.
_TURBO_ (30.10.2017 в 11:22)
Avenax , Внимание
В PHP 7, возможность вызова нестатического метода статически объявлена устаревшей и вызовет ошибку уровня E_DEPRECATED и в дальнейшем может быть удалена.
Avenax , Внимание
В PHP 7, возможность вызова нестатического метода статически объявлена устаревшей и вызовет ошибку уровня E_DEPRECATED и в дальнейшем может быть удалена.
Ну так это естественно