У меня есть три файла, foo.php, bar.php, а также baz.php, каждый include
сделаю следующее, следующим образом:
foo.php
<?php
$missile_launch_codes = [
'missileA' => '...',
'missileB' => '...',
'missileC' => '...'
];
bar.php
<?php
require('foo.php');
function try_to_launch($launch_code) {
...
}
function launch_missile($missile_name) {
if (in_array($missile_name, $missile_launch_codes)) {
return try_to_launch($missile_launch_codes[$missile_name]);
} else {
return false;
}
}
baz.php
require('bar.php')
if (...) {
launch_missile(...);
}
Файл baz.php должен быть в состоянии использовать launch_missile()
, но он определенно не должен иметь доступа к $missile_launch_codes
, Как бы я изолировать $missile_launch_codes
импортировано из foo.php держать их подальше от baz.php?
Что вы можете сделать, это Объектно-ориентированный путь:
Missile.php
Class Missile
{
private $missile_launch_codes = [
'missileA' => '...',
'missileB' => '...',
'missileC' => '...'
];
private function try_to_launch($launch_code) {
...
}
public function launch_missile($missile_name) {
if (in_array($missile_name, $this->missile_launch_codes)) {
return $this->try_to_launch($this->missile_launch_codes[$missile_name]);
} else {
return false;
}
}
}
Launch.php
include('Missile.php');
Class Launch extends Missile
{
if (...) {
$this->launch_missile(...);
}
}
Вот, $missile_launch_codes
может быть доступен только для класса Missile
только как заявлено private
,
Если бы я был тобой, ты должен сделать это в ООП. Вы можете сделать это таким образом …
foo.php:
class Foo {
protected function missile_launch_codes() {
return [
'missileA' => '...',
'missileB' => '...',
'missileC' => '...'
];
}
}
bar.php:
class Bar extends Foo {
public function try_to_launch($launch_code) {
...
}
public function launch_missile($missile_name) {
if (in_array($missile_name, $missile_launch_codes)) {
return try_to_launch($this->missile_launch_codes[$missile_name]);
} else {
return false;
}
}
}
baz.php
class Baz extends Bar {
// you cannot access missile_launch_codes() here
}
Постарайтесь больше узнать об ООП, чтобы понять, что я пытаюсь здесь сказать.