У меня есть один 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 ()? Как я решаю это?
Я не могу понять, как исходный вопрос соотносится с принятым ответом. Если я хочу убедиться, что определенный код не выполняется более одного раза сторонними скриптами, которые включают его, я просто создаю флаг:
<?php
if( !defined('FOO_EXECUTED') ){
foo();
define('FOO_EXECUTED', TRUE);
}
?>
Шаблоны Singleton просто заставляют все переменные, которые создают экземпляр одного класса, фактически указывают на один и тот же единственный экземпляр.
Думаю, вам понадобится шаблон Singleton . Он создает только один экземпляр класса и возвращает его каждый раз, когда вы его запрашиваете.
В разработке программного обеспечения шаблон синглтона - это шаблон проектирования, используемый для реализации математической концепции синглтона путем ограничения создания экземпляра класс к одному объекту . Это полезно, когда требуется ровно один объект для координации действий в системе. Концепция иногда обобщается на системы , которые работают более эффективно, когда существует только один объект или которые ограничивают создание экземпляра определенным количество объектов (скажем, пять). Некоторые считают это антипаттерном, полагая, что им злоупотребляют, вводит ненужные ограничения в ситуациях, когда единственный экземпляр класса на самом деле не требуется, а вводит глобальное состояние в приложение .
Обновление на основе комментария OP:
См. Это: