Как я могу выполнить блок кода точно однажды в PHP?

У меня есть один main.php файл с определением класса. Другие php файлы используют этот main.php файл

//main.php

<?php

class A{


}

//I want to execute the following statements exactly once    

$a = new A();
/*
Some code 
*/


?>

Я использую main.php в других php файлах как

//php1.php
<?php
require_once("main.php");

$b = new A();

/* 
Some code
*/

?>

//php2.php
<?php
require_once("main.php");

$b = new A();

/* 
Some code
*/

?>

Есть ли какой-либо оператор в PHP как execute_once ()? Как я решаю это?

11
задан Bruce 30 April 2010 в 09:32
поделиться

2 ответа

Я не могу понять, как исходный вопрос соотносится с принятым ответом. Если я хочу убедиться, что определенный код не выполняется более одного раза сторонними скриптами, которые включают его, я просто создаю флаг:

<?php

if( !defined('FOO_EXECUTED') ){
    foo();

    define('FOO_EXECUTED', TRUE);
}

?>

Шаблоны Singleton просто заставляют все переменные, которые создают экземпляр одного класса, фактически указывают на один и тот же единственный экземпляр.

12
ответ дан 3 December 2019 в 07:36
поделиться

Думаю, вам понадобится шаблон Singleton . Он создает только один экземпляр класса и возвращает его каждый раз, когда вы его запрашиваете.

В разработке программного обеспечения шаблон синглтона - это шаблон проектирования, используемый для реализации математической концепции синглтона путем ограничения создания экземпляра класс к одному объекту . Это полезно, когда требуется ровно один объект для координации действий в системе. Концепция иногда обобщается на системы , которые работают более эффективно, когда существует только один объект или которые ограничивают создание экземпляра определенным количество объектов (скажем, пять). Некоторые считают это антипаттерном, полагая, что им злоупотребляют, вводит ненужные ограничения в ситуациях, когда единственный экземпляр класса на самом деле не требуется, а вводит глобальное состояние в приложение .

Обновление на основе комментария OP:

См. Это:

Шаблон проектирования Singleton для PHP

3
ответ дан 3 December 2019 в 07:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: