Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для Mashka_mulashka
25 / 25 / 11
Регистрация: 13.12.2011
Сообщений: 818

Не могу получить массив Singleton

10.03.2016, 22:56. Показов 1997. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть файл конфигурации config.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
/*Задаются основные конфигурационные настройки базы данных
   dbnbame - название БД
    host - название хоста
    user - имя пользователя
   pass - пароль
    db_prefix - префикс каждой таблицы
   sitename - название сайта
*/
 
return array(
        'host' => 'localhost',
        'user' => '***',
        'pass' => '***',
        'db_name' => '***'
);
?>
в этом классе методом getOptions не могу получить значения

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class ApplicationHelper{
    private static $instance;
    private $config = ("./config/config.php");
    private $parameters;
 
    private function __construct() {}
 
    static function instance(){
        if(is_null(self::$instance) ){
            self::$instance = new self;
        }
        return self::$instance;
    }
 
    public function init(){
        include($this->config);
        $this->getOptions();
    }
 
    public function getOptions(){
        if (! file_exists($this->config)){
            throw new Exception("Файл с параметрами конфигурации не найден!");
        }
        return $this->parameters;
    }
}
?>
PHP
1
2
3
require 'system/controller/applicationHelepr.php';
$applicationHelper = ApplicationHelper::instance();
print "Конфиги: ".$applicationHelper->->init();
пустота
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.03.2016, 22:56
Ответы с готовыми решениями:

Collections: singleton/singletonList/singletonMap. Что значит слово singleton?
Заметил, что в классе Collections (утилитный класс) имеются методы для оборачивания элемента в set/list/map Все эти методы содержат в...

Массив после json_decode передаю, а получить в js не могу
Такой массив на выходе (для наглядности вывел при помощи print_r). это чтобы на карты Яндекс вывести массив меток Array ( =&gt; Array...

Что значит Singleton& operator = ( Singleton& )?
// Singleton.h class Singleton { private: static Singleton * p_instance; // Конструкторы и оператор присваивания...

10
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
11.03.2016, 01:06
вместо ApplicationHelper лучше наверное использовать Registry во всей его красе
в init вы подключаете файл а после в getOptions проверяете наличие его
при подключении файл возвращает массив в функцию и там-же помирает
мой вариант
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
class Registry
{
    /**
     * @var array таблица хранилища
     */
    private $table = array();
 
    /**
     * функция конструктор класса, получили параметы системы из config.ini
     */
    private function __construct()
    {
        // получили данные конфигурации приложения
        $this->setArray(parse_ini_file(PATH_ROOT . 'config.ini'));
    }
 
    /**
     * @return static
     */
    public static function getInstance()
    {
        static $registry;
        empty($registry) && $registry = new static();
        return $registry;
    }
 
    /**
     * Проверяем есть ли переменная
     * @param string $key
     * @return bool
     */
    public function exists($key)
    {
        return isset($this->table[$key]);
    }
 
    /**
     * установка переменной
     * @param string $key
     * @param mixed $value
     * @return mixed
     */
    public function set($key, $value)
    {
        $this->table[$key] = $value;
    }
 
    /**
     * запись массива в хранилище
     * @param array $array
     */
    public function setArray(array $array)
    {
        foreach ($array as $key => $value) {
            $this->table[$key] = $value;
        }
    }
 
    /**
     * получение значения
     * @param $key
     * @param null $def
     * @return mixed
     */
    public function get($key, $def = null)
    {
        return isset($this->table[$key]) ? $this->table[$key] : $def;
    }
 
    /**
     * удаление значения
     * @param $key
     */
    public function clear($key)
    {
        $this->table[$key] = null;
        unset($this->table[$key]);
    }
}
0
 Аватар для Mashka_mulashka
25 / 25 / 11
Регистрация: 13.12.2011
Сообщений: 818
11.03.2016, 15:57  [ТС]
спасибо, но хотелось бы узнать как мой вариант подправить так, чтоб он заработал?

Добавлено через 1 минуту
просто у меня Front Controller, на самом деле конфиги улетят туда. Так, для теста пытаюсь получить конфиги, но не могу
0
wq
85 / 78 / 32
Регистрация: 26.11.2015
Сообщений: 481
12.03.2016, 19:29
Цитата Сообщение от Mashka_mulashka Посмотреть сообщение
PHP
1
2
3
4
5
6
7
8
9
10
public function init(){
* * * * include($this->config);
* * * * $this->getOptions();
* * }
public function getOptions(){
* * * * if (! file_exists($this->config)){
* * * * * * throw new Exception("Файл с параметрами конфигурации не найден!");
* * * * }
* * * * return $this->parameters;
* * }
к чему этот код? он ничего не делает
Цитата Сообщение от Mashka_mulashka Посмотреть сообщение
как мой вариант подправить так, чтоб он заработал?
знать бы что означает "заработал"
0
 Аватар для Mashka_mulashka
25 / 25 / 11
Регистрация: 13.12.2011
Сообщений: 818
13.03.2016, 13:19  [ТС]
wq, в том и дело, что ничего не делает, а должен получить конфиг данные и вывести их на экран((
0
wq
85 / 78 / 32
Регистрация: 26.11.2015
Сообщений: 481
13.03.2016, 13:31
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class ApplicationHelper {
 
    private $config = (__DIR__ . "/config/config.php");
    private $parameters;
 
    public function init() {
        if (!file_exists($this->config)) {
            throw new Exception("Файл с параметрами конфигурации не найден!");
        }
        $this->parameters = require $this->config;
        echo '<pre>' . print_r($this->parameters, true) . '</pre>';
    }
 
}
0
Hello Kitty
 Аватар для WhiteMind
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
13.03.2016, 13:35
предположим
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class ApplicationHelper{
    private static $instance;
    private $config = ("./config/config.php");
    private $parameters;
 
    private function __construct() {}
 
    static function instance(){
        if(is_null(self::$instance) ){
            self::$instance = new self;
        }
        return self::$instance;
    }
 
    public function init(){
        include($this->config);
        $this->getOptions();
    }
 
    public function getOptions(){
        if (! file_exists($this->config)){
            throw new Exception("Файл с параметрами конфигурации не найден!");
        }
        include $this->config;
    }
}
?>
0
 Аватар для Mashka_mulashka
25 / 25 / 11
Регистрация: 13.12.2011
Сообщений: 818
13.03.2016, 13:49  [ТС]
WhiteMind, а зачем делать include $this-config в двух местах

PHP
1
2
3
4
    public function init(){
        include($this->config);
        $this->getOptions();
    }
и
PHP
1
2
3
4
5
6
   public function getOptions(){
        if (! file_exists($this->config)){
            throw new Exception("Файл с параметрами конфигурации не найден!");
        }
        include $this->config;
    }
Добавлено через 40 секунд
но в любом случае

PHP
1
2
3
require 'system/controller/applicationHelepr.php';
$applicationHelper = ApplicationHelper::instance();
print "Конфиги: ".$applicationHelper->init();
пустота
0
Hello Kitty
 Аватар для WhiteMind
690 / 562 / 402
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
13.03.2016, 13:50
Цитата Сообщение от Mashka_mulashka Посмотреть сообщение
WhiteMind, а зачем делать include $this-config в двух местах
не знаю.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class ApplicationHelper{
    private static $instance;
    private $config = ("./config/config.php");
    private $parameters;
 
    private function __construct() {}
 
    static function instance(){
        if(is_null(self::$instance) ){
            self::$instance = new self;
        }
        return self::$instance;
    }
 
    public function init(){
        $this->parameters = $this->getOptions();
    }
 
    public function getOptions(){
        if (! file_exists($this->config)){
            throw new Exception("Файл с параметрами конфигурации не найден!");
        }
        include $this->config;
    }
}
?>
0
wq
85 / 78 / 32
Регистрация: 26.11.2015
Сообщений: 481
13.03.2016, 14:03
Лучший ответ Сообщение было отмечено Mashka_mulashka как решение

Решение

вот же я вам нарисовал чтение конфига
Цитата Сообщение от wq Посмотреть сообщение
$this->parameters = require $this->config;
после этого свойство parameters содержит массив описанный в вашем конфиге
1
 Аватар для Mashka_mulashka
25 / 25 / 11
Регистрация: 13.12.2011
Сообщений: 818
13.03.2016, 14:10  [ТС]
wq, тогда метод getOptions мне вообще не нужен)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.03.2016, 14:10
Помогаю со студенческими работами здесь

Массив: Получить новый массив P, состоящую из чисел в интервале (a,b), которые не входят в массив H...
Помогите с заданием, пожалуйста :Написать программу, которая формирует новую последовательность P, состоящую из целых чисел из интервала...

Дан массив, состоящий из 15 элементов целого типа. Получить новый массив, как разность между элементами исходного массив
Дан массив, состоящий из 15 элементов целого типа. Получить новый массив, как разность между элементами исходного массива и его среднего...

Получить 3 массива A - массив объединения, B - массив пересечения, С - массив разность
Написать программу на паскале: Дано 2 массива размерностью N состоящих из различных целых чисел. Получить 3 массива A - массив объединения,...

Дан массив А[М] — массив чисел. Получить массив С, элементами которого будут модули сумм рядом стоящих чисел
Реализовать в виде модуля набор подпрограмм для выполне¬ния сле-дующих операций над целыми числами: а) сложения; б) вычитания; ...

Singleton
Добрый день, объясните пожалуйста как работает этот код и что такое синглетон? я немного понимаю, но преподу нужно точная формулировка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru