использовать переменную основного файла внутри класса PHP - PullRequest
0 голосов
/ 03 октября 2019

У меня есть основной php-файл, который содержит переменную:

$data['username']

, которая возвращает строку имени пользователя правильно. В этот основной файл я включил php-файл класса:

require_once('class.php');

, кажется, они хорошо связаны друг с другом. Мой вопрос: как я могу использовать значение $data['username'] внутри файла класса? Мне нужно сделать оператор if, чтобы проверить его значение внутри этого класса.

class.php

<?php

class myClass {
    function __construct() {

        if ( $data['username'] == 'johndoe'){   //$data['username'] is null here
          $this->data = 'YES';
        }else{
          $this->data = 'NO';
        }
    }
}

Ответы [ 2 ]

1 голос
/ 03 октября 2019

Есть много способов сделать это, мы могли бы дать вам точный ответ, если бы знали, как выглядит ваш основной php-файл и класс. Один из способов сделать это, из головы:

// main.php
// Instantiate the class and set it's property
require_once('class.php');
$class = new myClass();
$class->username = $data['username'];
// Class.php
// In the class file you need to have a method
// that checks your username (might look different in your class):
class myClass {

    public $username = '';

    public function __construct() {}

    public function check_username() {
        if($this->username == 'yourvalue') {
            return 'Username is correct!';
        }
        else {
            return 'Username is invalid.';
        }
    }
}
// main.php
if($class->username == 'yourvalue') {
    echo 'Username is correct!';
}

// or
echo $class->check_username();
0 голосов
/ 03 октября 2019

Если переменная определена до вызова require_once, то вы можете получить к ней доступ с помощью ключевого слова global.

main.php

<?php
$data = [];
require_once('class.php');

class.php

<?php
global $data;

...

Если ваш class.php определяет фактический класс, то я бы порекомендовал ответ Лукаша.

На основании вашего обновления я бы добавил данные в качестве параметра в конструктор и передал их вэкземпляр:

<?php
require_once('class.php');

$data = [];

new myClass($data);

Настройка вашего конструктора, чтобы иметь подпись __construct(array $data)

...