За последние 24 часа нас посетили 74182 программиста и 10165 роботов. Сейчас ищут 2483 программиста ...

чтение переменных из другого файла в классе

Тема в разделе "PHP для новичков", создана пользователем vital8111, 11 авг 2016.

  1. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.178
    Симпатии:
    161
    Адрес:
    GABRIEL
    Смотри

    1. Namespace
    Он позволяет нам сказать php машине, что этот класс является частью пространства. И указываем его.

    Далее нам нужен авто подгруз классов. Autolader. Можешь написать сам, а можешь воспользоваться compozer он лучше, ещё он позволяет подкачивать всякие "финтиплюшки" к нашему проекту после чего мы можем их использовать просто обращаться к ним. Вот тебе картинка.

    autolader.png
     
  2. vital8111

    vital8111 Новичок

    С нами с:
    22 мар 2016
    Сообщения:
    52
    Симпатии:
    1
    @askanim то есть сам файл конфига сделать отдельным классом? а не класс читающий файл конфига?
    С композером не умею
    Автолоад писал сам
     
    askanim нравится это.
  3. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.178
    Симпатии:
    161
    Адрес:
    GABRIEL
    @vital8111 Эврика.
    --- Добавлено ---

    @vital8111 Там не сложно!
    --- Добавлено ---
    Качаешь композер в корень своего проекта, потом в ед точки входа пишешь так
    PHP:
    1. define('ROOT', dirname(__FILE__));
    2.     require_once ROOT.'/vendor/autoload.php';
     
  4. vital8111

    vital8111 Новичок

    С нами с:
    22 мар 2016
    Сообщения:
    52
    Симпатии:
    1
    Спасибо вроде понял. Как и неймспейсы)(который оказалось не понял)
    Буду пробовать. Результат напишу.
    Про композер почитаю
     
  5. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.178
    Симпатии:
    161
    Адрес:
    GABRIEL
    @vital8111 Вот например мой index.php

    PHP:
    1. define('ROOT', dirname(__FILE__));
    2.     require_once ROOT.'/vendor/autoload.php';
    3.  
    4.  
    5. //Вызов первоначальных настроек
    6.         $config = new System\Config\Config();
    7.         $config->er_report();
    8.  
    9.  
    10. //Вызов Router
    11.         $router = new System\Http\Route;
    12.         $router->rout();
    Всё остальное у меня разбросано по классам и подключается уже внутри моего роутера.
    --- Добавлено ---
    @vital8111 Ща я тебе ссылочки дам!
     
  6. vital8111

    vital8111 Новичок

    С нами с:
    22 мар 2016
    Сообщения:
    52
    Симпатии:
    1
    @askanim а можно метод config() глянуть?
     
  7. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.599
    Симпатии:
    206
  8. vital8111

    vital8111 Новичок

    С нами с:
    22 мар 2016
    Сообщения:
    52
    Симпатии:
    1
    понял
    смутили ()
    конструктор же)
     
  9. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.870
    Симпатии:
    955
    А нам дашь?
     
  10. vital8111

    vital8111 Новичок

    С нами с:
    22 мар 2016
    Сообщения:
    52
    Симпатии:
    1
  11. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.178
    Симпатии:
    161
    Адрес:
    GABRIEL
    Не путай методы и классы!
    Это класс, а не метод.

    В данном случае, методом будет

    Код (Text):
    1. $config->er_report();
    Смотри.
    PHP:
    1. <?php
    2.  
    3. namespace System\Config;
    4.  
    5.  
    6.      class Config {
    7.         public function __construct() {
    8.             $constants = file_get_contents(ROOT.'/config.list');
    9.             $constants = explode(';',$constants);
    10.             foreach($constants As $key => $value) {
    11.                 $con = explode('=', trim($value));
    12.                 define($con[0], $con[1]);
    13.             }
    14.      }
    15.         public function er_report ()
    16.         {
    17.  
    18.             ini_set('display_errors', 1);
    19.             error_reporting(E_ALL);
    20.  
    21.  
    22.         }
    23.          public static function unique_multidim_array($array, $key) {
    24.              $temp_array = array();
    25.              $i = 0;
    26.              $key_array = array();
    27.  
    28.              foreach($array as $val) {
    29.                  if (!in_array($val[$key], $key_array)) {
    30.                      $key_array[$i] = $val[$key];
    31.                      $temp_array[$i] = $val;
    32.                  }
    33.                  $i++;
    34.              }
    35.              return $temp_array;
    36.          }
    37.  
    38.     }
    --- Добавлено ---
    @Ganzal а ты уже видел.
     
  12. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Дожились, настройки в классах храним :D капец.
     
    #37 rodent90, 12 авг 2016
    Последнее редактирование: 12 авг 2016
  13. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.178
    Симпатии:
    161
    Адрес:
    GABRIEL
  14. vital8111

    vital8111 Новичок

    С нами с:
    22 мар 2016
    Сообщения:
    52
    Симпатии:
    1
    @askanim спасибо. про класс я понял)
    --- Добавлено ---
    @askanim все таки file_get_contents?
    читает настройки из файла? и кладет в константы?
     
  15. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.178
    Симпатии:
    161
    Адрес:
    GABRIEL
    @vital8111 смотри что у меня там.

    Код (Text):
    1. DATEBASE=YCar;
    2. URL=http://y-car.ru/;
    3. USER=sosed;
    Там просто текстовый файл, ну мне так удобно.
     
  16. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.870
    Симпатии:
    955
    @askanim неэффективно. Удобно в пхп и возвращать массив.
     
  17. vital8111

    vital8111 Новичок

    С нами с:
    22 мар 2016
    Сообщения:
    52
    Симпатии:
    1
    @askanim задача то изначально такая и была. просто не хотелось парсить файл а хотелось инклудом приклеить.
    из этого и вышла такая тема
    --- Добавлено ---
    @Ganzal а можно поподробнее как массив возвратить? или так же надо читать файл просто в массив?
     
  18. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.178
    Симпатии:
    161
    Адрес:
    GABRIEL
    @Ganzal на скорость особо не влияет, у меня нет задачи, держать там множества говна, в этом файлике будет находиться максимум 10 строчек. И это тупо для констант, а их не так много. Так что накой мне массив? Тут будут находится настройки для движка.
     
  19. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.870
    Симпатии:
    955
    @vital8111 не слушай его. Он сам еще мало что понимает. Можешь сделать смешной трюк. Сделай простой класс class Config { static $cfg; static function init () { static::$cfg = require ROOT . '/config.php'; }} а в конфиге пиши <?php return array(тут массив пар ключ-значение);
    И всё. Опкод кэшится. Класс доступен из любой точки. Статическое свойство не требует создания экземпляра класса.
     
  20. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.178
    Симпатии:
    161
    Адрес:
    GABRIEL
    @vital8111
    PHP:
    1.  Class rArray {
    2.       public function __construct() {
    3.                 return [
    4.                   'in' => 'Ты вернул значение in'
    5. ];
    6.  
    7.       }
    8. }
     
  21. vital8111

    vital8111 Новичок

    С нами с:
    22 мар 2016
    Сообщения:
    52
    Симпатии:
    1
  22. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.178
    Симпатии:
    161
    Адрес:
    GABRIEL
    @vital8111 @Ganzal уже давно не новичёк, и он забыл уже, что такое когда только начинаешь свой путь.
     
  23. vital8111

    vital8111 Новичок

    С нами с:
    22 мар 2016
    Сообщения:
    52
    Симпатии:
    1
    понимать как использовать и убегать это вроде как не одно и то же)
    задам вопрос по другому тогда
    почему в данном случае следует убегать от статики?
     
  24. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.178
    Симпатии:
    161
    Адрес:
    GABRIEL
    @Ganzal да лара просто так держит настройки в листе.
     
  25. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.870
    Симпатии:
    955
    @askanim не забыл. Ох поверь мне не забыл... Можешь посмотреть историю моих сообщений года от 2007. Одно важное отличие от тебя - я не выпендривался. Да, тупил. У всех бывает. Но не выпендривался. И слушал. И менялся. И учился. А у тебя только ЧСВ-то и есть. Грамотность на родном языке - стремится к нулю. Грамотность в программировании - хромает. Грамотность в стеке профильных технологий - тоже. Но ЧСВ позволяет тебе этого не замечать. Да, ЧСВ и наглость.