Lieroes
Новичок
Добрый день,
Сейчас пытаюсь написать свой движок для своей маленькой CMS.
И не получается обратиться из router.php, к объекту класса Currency объявленному в system.php - $currency.
Если в router.php подключить файл currency.php и объявить объект, то все будет ок, это тогда придется в каждом файле инклюдить файлы и объявлять объект.
Подскажите пожалуйста..
index.php
system.php
router.php
currency.php
Сейчас пытаюсь написать свой движок для своей маленькой CMS.
И не получается обратиться из router.php, к объекту класса Currency объявленному в system.php - $currency.
Если в router.php подключить файл currency.php и объявить объект, то все будет ок, это тогда придется в каждом файле инклюдить файлы и объявлять объект.
Подскажите пожалуйста..
index.php
PHP:
<?php
require 'includes/System.php';
$system = System::getInstance();
?>
PHP:
<?php
require 'includes/Router.php';
require 'includes/Currency.php';
require 'includes/functions.php';
require 'config.php';
class System {
private static $_instance = null;
private function __construct() {
session_start();
$router = Router::getInstance();
$currency = Currency::getInstance();
$currency->setDefault();
// проверка сконфигурирован ли сайт
if ($this->configIsDone()) {
// проверка используется ли тема, если нет - использовать тему по умолчанию
if (!$this->themeInUse()) {
// путь к теме, по умолчанию
define(THEME_PATH, 'themes/default/');
$router->route();
} else {
$path = mysql_result(mysql_query("SELECT `param1` FROM `settings` WHERE title = 'theme_path' "), 0);
define(THEME_PATH, $path);
// путь к файлу темы index.php
$pathToIndex = THEME_PATH . 'index.php';
if (file_exists($pathToIndex)) {
$router->route();
} else {
// выполнить код, если файла index.php не существует
}
}
} else {
// если сайт не сконфигурирован, переадресация по этой ссылке
header('location: control/index.php');
}
}
private function __clone() {
}
private function configIsDone() {
$status = mysql_result(mysql_query("SELECT `param1` FROM `settings` WHERE title = 'config' "), 0);
return $status;
}
private function themeInUse() {
$status = mysql_result(mysql_query("SELECT `param1` FROM `settings` WHERE title = 'theme_in_use' "), 0);
return $status;
}
public static function getInstance() {
if (null === self::$_instance) {
self::$_instance = new self();
}
return self::$_instance;
}
}
?>
PHP:
<?php
class Router {
private static $_instance = null;
// При получении параметра $page, работает ELSE с правилами переадрессации, в противном случае,
// если функция не получает параметр $page, то срабатывает переадрессация по параметру GET[page].
public function route($page = null) {
if (isset($page)) {
if ($page == 'index') {
require (THEME_PATH . 'index.php');
}
else if ($page == 'settings') {
header('Location: control-panel/index.php');
}
}
elseif (isset($_GET[page])) {
$page = $_GET[page] . '.php';
if (file_exists(THEME_PATH . $page)) {
КАК ТУТ ОБРАТИТЬСЯ К МЕТОДУ ОБЪЕКТА $currency, СОЗДАННОМУ В system.php
}
else {
require (THEME_PATH . 'index.php');
}
}
else {
require (THEME_PATH . 'index.php');
}
}
public static function getInstance() {
if (null === self::$_instance) {
self::$_instance = new self();
}
return self::$_instance;
}
private function __construct() {
}
private function __clone() {
}
}
?>
PHP:
<?php
class Currency {
private static $_instance = null;
// Если валюта не установлена - установить, в противном случае ничего не менять (оставить текущую).
public function setDefault() {
if (!(isset($_SESSION['currency']))) {
$default_currency = mysql_result(mysql_query("SELECT `title` FROM `currency` WHERE id = (SELECT `param1` FROM `settings` WHERE `title` = 'default_currency')"), 0);
$_SESSION['currency'] = $default_currency;
}
}
// Установить новую валюту
public function change($currency) {
$_SESSION['currency'] = $currency;
}
// Конвертация цена по курсам валют
public function getPrice($amount) {
$default_currency = mysql_result(mysql_query("SELECT `title` FROM `currency` WHERE id = (SELECT `param1` FROM `settings` WHERE `title` = 'default_currency')"), 0);
if ($_SESSION['currency'] == $default_currency) {
return $amount;
}
else {
$rate = mysql_result(mysql_query("SELECT `rate` FROM `currency` WHERE title = '$_SESSION[currency]'"), 0);
return $rate * $amount;
}
}
public static function getInstance() {
if (null === self::$_instance) {
self::$_instance = new self();
}
return self::$_instance;
}
private function __clone() {
}
private function __construct() {
}
}
?>