2013-10-01 3 views
-2

Хотите вызвать функцию из включенного php. Я:Невозможно вызвать функцию из включенного php-файла

<?php 
include 'http://localhost:9090/myapp-backend/login.php'; 
$lg = new Login(); 
$lg->login(); 
?> 

login.php:

<?php 
class Login 
{ 
    public function login() { 
     //*some code 
    } 
} 

Конец ошибки:

Fatal error: Class 'Login' not found in D:\xampp\htdocs\myapp\index.php on line 3 

Когда я не использую класс в login.php просто функция я получаю ошибку, что функция не существует.
Что не так?

+4

Если он исходит из localhost, почему вы пытаетесь включить его через HTTP вместо его пути к файлу? –

+0

Если это работает в ящике Windows, я на 99% уверен, что он не сработает - вы не можете включать файлы через HTTP. – CD001

+0

Открыть http: // localhost: 9090/myapp-backend/login.php в вашем браузере, что вы получаете? PHP получается точно так же ...! – deceze

ответ

2

Чтобы обеспечить это кросс-платформенной совместимости (с использованием PHP 5 с постоянной __DIR__) вы могли бы использовать что-то более подобное (хотя, я, как правило, также использовать require_once для файла, как это, чем включают).

//assuming you're calling the include from the a file at the root of the web server 
include realpath(__DIR__ . '/myapp-backend/login.php'); 

//or using require_once 
require_once realpath(__DIR__ . '/myapp-backend/login.php'); 

Хотя Windows довольно легкомысленно использует '/' или '\' в качестве разделителей каталогов.

См: http://php.net/manual/en/function.realpath.php

Для более старых версий PHP (которые имеют __FILE__ постоянные, но не постоянную __DIR__), вы можете использовать следующий - но на самом деле, это не должно быть необходимо больше:

require_once realpath(dirname(__FILE__) . '/myapp-backend/login.php'); 

http://uk3.php.net/manual/en/function.dirname.php

3

include удаленного файла будет включать в себя только результат (который произведен удаленный сервер), а не источник вашего кода.

Использование include локально (локальный FS), чтобы получить источник - так как вы имеете в виду локальный

-1

Вы должны использовать путь в вашей системе, а не виртуального каталога. Например:

include 'C:/myapp-backend/login.php'; 
+0

Не работает' require 'C: /xampp/htdocs/myapp-backend/glogin.php'; 'give me 'no такой файл или каталог' –

+1

Вы писали' glogin.php'? – vikingmaster

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