PHP - обмен статическими переменными класса с экземплярами с нескольких страниц - PullRequest
0 голосов
/ 17 сентября 2018

Я разработчик PHP, и у меня есть класс, который включен почти на каждую страницу моего проекта.Теперь объект, который я создаю каждый раз, одинаков для всех страниц, хотя у меня есть объект, который мне нужен для каждого из объектов, рассмотрим страницу, в которой они находятся. Поэтому мой вопрос заключается в том,у меня может быть класс, который имеет статическую переменную, которая является sherd между экземплярами с разных страниц?

ПРИМЕЧАНИЕ. - Мне нужно создавать объект только при создании первого экземпляра, поскольку вы не можете объявить новое в переменной

пример:

имя страницы - class.php

<?php
    class foo{
        var $a;
        public static $b;

        function foo($a){
            $this->a = $a;
            if(!self::$b) self::b = new bar("c");
        }

        public static function update_static(){
            self::$b = new bar("c2");
        }
  } 

  class bar{
        var $c;

        function foo($c){
            $this->c = $c;
        }
  } 
?>

Теперь у меня есть две разные страницы.

страница 1.

<?php
    include('class.php');
    $new_foo = new foo("a");
    var_dump(foo::$b); //or var_dump($new_foo::$b)
?>

стр. 2.

<?php
    include('class.php');
    $new_foo = new foo("a");
    foo::update_static();
?>

Я хочу, чтобы при запуске первой страницы, а затем второй, а затем и первой снова показывался optup на первой странице: первый запуск -

object(bar)(1){["c"]=>string(1) "c"}

второй запуск после запуска второй страницы -

object(bar)(1){["c"]=>string(1) "c2"}

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

1 Ответ

0 голосов
/ 17 сентября 2018

Вы можете, но, скорее всего, не будете использовать статические переменные.Это может быть сделано с помощью веб-сервера, который использует ту же память, что и некоторые реализации в ReactPHP.

Однако большинство веб-серверов настроены на обработку запросов PHP как «новых» процессов, которые не разделяют память, поэтому переменные и свойства из предыдущих запросов не будут доступны.Для поддержания состояния этих запросов можно использовать постоянное хранилище (базы данных), кэши, сеансы (на стороне сервера) или файлы cookie (на стороне клиента).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...