PHP7 .3: обновление данных в классе из 2 других классов - PullRequest
0 голосов
/ 02 февраля 2020

Я хочу сохранить некоторую конфигурацию в классе (data.class. php), который будет обновлен (ClassOne.class. php), а обновленные изменения должны быть прочитаны (ClassTwo.class. php).

Изменения видны из (ClassOne), но не из (ClassTwo).

Вопрос: Как изменения в data.class. php быть постоянным, чтобы (ClassTwo) мог видеть изменения?

Файл: run. php

<?php

include("data.class.php");
include("ClassOne.class.php");
include("ClassTwo.class.php");

$class_one = new ClassOne();
$class_one->run();


$class_two = new ClassTwo();
$class_two->run();

Файл: data.class. php

<?php

class ConfigurationData
{

      public $http_components = [
        "method" => [
          "GET",     // [0] <-- Index
          "POST",    // [1]
          null       // [2]
        ]
      ];

}

Файл: ClassOne.class. php

<?php

class ClassOne extends ConfigurationData
{

    public function run()
    {
        $this->printDataPriorToInjection();
        $this->injectHelloInData();
        $this->printDataAfterInjection();
    }

    public function printDataPriorToInjection()
    {
      print_r($this->http_components);
    }

    public function injectHelloInData()
    {
      $this->http_components["method"][2] = "DELETE";
    }

    public function printDataAfterInjection()
    {
      print_r($this->http_components);
    }


}

Файл: ClassTwo.class. php

<?php

class ClassTwo extends ConfigurationData
{


    public function run()
    {
        // $this->printData();
    }

    public function printData()
    {
    print_r($this->http_components);
    }

}

Результат:

// Результат из [ClassOne.class.php]

Array
(
    [method] => Array
        (
            [0] => GET
            [1] => POST
            [2] => 
        )

)
Array
(
    [method] => Array
        (
            [0] => GET
            [1] => POST
            [2] => DELETE
        )

)

// Результат из [ClassTwo.class.php]

Array
(
    [method] => Array
        (
            [0] => GET
            [1] => POST
            [2] =>        // Comment. I would like DELETE to be visible.
        )

)

1 Ответ

0 голосов
/ 02 февраля 2020

вероятно, вы не должны расширять классы с помощью класса конфигурации

сделать ваш класс конфигурации как синглтон.

...