Как включить переменную внутри класса в php - PullRequest
4 голосов
/ 28 апреля 2009

у меня есть файл test.php

<?PHP
    $config_key_security = "test";
?>

и у меня есть класс

test5.php

 include test.php
       class test1 {
                function test2 {
                   echo $config_key_security;
             }
        }

Ответы [ 6 ]

18 голосов
/ 28 апреля 2009
   class test1 {
            function test2 {
               global $config_key_security;
               echo $config_key_security;
         }
    }

или

   class test1 {
            function test2 {
               echo $GLOBALS['config_key_security'];
         }
    }

Если ваш класс полагается на глобальную переменную, на самом деле это не лучшая практика - вам следует вместо этого передать ее конструктору.

15 голосов
/ 28 апреля 2009

Ваш конфигурационный файл должен создать массив элементов конфигурации. Затем включите этот файл в конструктор вашего класса и сохраните его значение как переменную-член. Таким образом, все ваши настройки конфигурации доступны для класса.

test.php:

<?
$config["config_key_security"] = "test";
$config["other_config_key"] = true;
...
?>

test5.php:

<?
class test1 {
    private $config;

    function __construct() {
        include("test.php");
        $this->config = $config;
    }

    public function test2{
        echo $this->config["config_key_security"];
    }
}
?>
7 голосов
/ 28 апреля 2009

Другой вариант - включить test.php в метод test2. Это сделает область видимости переменной локальной для функции.

   class test1 {
            function test2 {
               include('test.php');
               echo $config_key_security;
         }
    }

Тем не менее, это не очень хорошая практика.

2 голосов
/ 03 июня 2010

Я предпочитаю делать так:

В test.php

define('CONFIG_KEY_SECURITY', 'test');

и затем:

в test5.php

include test.php
   class test1 {
            function test2 {
               echo CONFIG_KEY_SECURITY;
         }
    }
2 голосов
/ 28 апреля 2009

Использование метода __construct ().

include test.php;
$obj = new test1($config_key_security);
$obj->test2();

class test1
{
    function __construct($config_key_security) {
        $this->config_key_security = $config_key_security;
    }

    function test2() {
        echo $this->config_key_security;
    }
}
1 голос
/ 24 июня 2014

Вы можете использовать массив переменных $ GLOBALS и поместить в него свою глобальную переменную.

Например: Файл: configs.php

<?PHP
    $GLOBALS['config_key_security'] => "test";
?>

Файл: MyClass.php

<?php
require_once 'configs.php';
class MyClass {
  function test() {
    echo $GLOBALS['config_key_security'];
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...