За последние 24 часа нас посетили 31570 программистов и 1764 робота. Сейчас ищут 1042 программиста ...

Видимость переменных

Тема в разделе "PHP для новичков", создана пользователем exec, 29 дек 2018.

  1. exec

    exec Активный пользователь

    С нами с:
    25 дек 2012
    Сообщения:
    34
    Симпатии:
    1
    index.php
    require_once 'config.php';
    require_once 'BD.class.php';
    $dbh = new DB();

    config.php
    $configs = array();
    $configs['db_port'] = '3306';

    BD.class.php
    class DB
    {
    private $DBPort;
    public function __construct() {
    $this->DBPort = $configs['db_port']; // тут ошибка
    }

    }

    error: PHP Notice: Undefined variable: configs in ..

    Почему ??
     
  2. AlexandrS

    AlexandrS Активный пользователь

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    Так а class DB не видит $configs
    Вам нужно передать $configs в __construct()
    index.php
    PHP:
    1. require_once 'config.php';
    2. require_once 'BD.class.php';
    3. $dbh = new DB($configs);
    И при вставке кода используйте специальный функционал вот его иконка на панели </> и выбирайте соответствующий язык для вставки.
     
    #2 AlexandrS, 29 дек 2018
    Последнее редактирование: 29 дек 2018
  3. exec

    exec Активный пользователь

    С нами с:
    25 дек 2012
    Сообщения:
    34
    Симпатии:
    1
    А как передать ??
     
  4. AlexandrS

    AlexandrS Активный пользователь

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    index.php
    PHP:
    1. require_once 'config.php';
    2. require_once 'BD.class.php';
    3. $dbh = new DB($configs);
     
  5. exec

    exec Активный пользователь

    С нами с:
    25 дек 2012
    Сообщения:
    34
    Симпатии:
    1
    PHP:
    1. $dbh = new DB($configs);
    не помогло.
    версия php 5.6
     
  6. AlexandrS

    AlexandrS Активный пользователь

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    точно такая же ошибка?
    вот так еще нужно было сделать:

    BD.class.php
    PHP:
    1. class DB
    2. {
    3. private $DBPort;
    4. public function __construct($configs) {
    5. $this->DBPort = $configs['db_port']; // тут ошибка
    6. }
     
  7. exec

    exec Активный пользователь

    С нами с:
    25 дек 2012
    Сообщения:
    34
    Симпатии:
    1
    PHP:
    1. public function __construct($configs)
    Ура - помогло !