2016-09-15 2 views
1

Например, допустим, что я использую библиотеку, называемую онлайн, называемую «альфа». Эта библиотека имеет файл Authenticate.php, который мне нужно включить в каждый файл, чтобы использовать библиотеку.Как избежать использования множественного include или require в PHP?

Например:

for login.php 
<?php 
include 'Authenticate.php'; 
include 'Everything.php'; 
sac::forceAuthentication(); 
<html> 
<head> 
    <title>Example</title> 
</head> 
<body> 
    <h1>Authentication Succeeded</h1> 
</body></html> 
?> 

for logout.php 
<?php 
include 'Authenticate.php'; 
include 'Everything.php'; 
sac::logout(); 
<html> 
<head> 
    <title>Example</title> 
</head> 
<body> 
    <h1>Logout Successful</h1> 
</body></html> 
?> 

Как вы можете видеть, что мне нужно, чтобы включить Authenticate.php все мои файлы, чтобы использовать функциональные возможности Authenticate.php

Есть ли способ я могу избежать этого , включив Authenticate.php в файл Everything.php?

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

Я планирую включать в себя следующие функции Authenticate.php в Everything.php, выполнив следующие действия

class Everything { 

    public function Login(){ 
     include_once('Authenticate.php'); 
     sac::forceAuthentication(); 

    } 
    public function logout(){ 
     include_once('Authenticate.php'); 
     sac::logout(); 
    } 
// Some other functions of everything.php 
} 

Примечание: Authenticate.php имеет много других функций, которые я не нужны, я хочу использовать только выбранные функции и включить в Everything.php

Спасибо заранее.

+1

Вот почему [PSR-4] (http://www.php-fig.org/psr/psr-4/) и автозагрузчики существуют, например: [Автозагрузчик композитора] (https://getcomposer.org/ док/01-basic-usage.md # самозарядные). – Sammitch

+0

'auto_prepend_file' директива в файле' php.ini', возможно, – nogad

ответ

1

Ввод include внутри функции, вероятно, не очень хорошая идея. Если он назначает переменные, которые должны быть глобальными, они будут только в пределах этой функции, а не глобальной.

Вы можете создать файл, который содержит как Authenticate.php, так и Everything.php. Назовите это AuthEverything.php, и она будет содержать:

include_once('Authenticate.php'); 
include_once('Everything.php'); 

Затем положить include_once('AuthEverything.php') в вашем login.php и logout.php.

+0

Спасибо, Barmer. Другой вопрос: если я хочу создать один пакет с этими двумя Authenticate.php и Everything.php. Не могли бы вы дать какие-либо предложения о том, как это сделать? –

+0

Я не уверен, что вы подразумеваете, создавая пакет. Как для распространения на Github? – Barmar

+0

Допустим, я хочу создать один класс (AuthEverything.php) с функциями Authenticate.php и Everything.php для создания пакета. Чтобы мои коллеги могли использовать этот пакет и получить все функциональные возможности этих двух файлов. У меня есть смысл? –

Смежные вопросы