Как получить доступ к файлам Cross-Project в php?

0

У меня есть projectA, у которого есть a.php, и у меня есть projectB, у которого есть b.php. Как мне получить доступ к a.php из b.php. Все эти проекты лежат в том же корне, что и HOME. Пожалуйста, помогите



    <?php
    class B {
        function getB() {
            return "B";
        }
    }   
<?php
    include '/projectB/B.php';
     class AA {
        function getA() {
            $objB=new B();
            echo $objB->getB();
        }
    }

    $obj=new AA();
    $obj->getA();
    ?>

Ошибка, вызванная тем, что класс 'B' не найден в C:\wamp\www\projectA\AA.php

Теги:

4 ответа

0
Лучший ответ

Если файл a.php находится в другом каталоге, путь может быть либо относительным (к вашему текущему файлу директории a.php), либо абсолютным (на основе абсолютного пути к файлу вашего сервера).

Пример относительного:

<?php 
     include('../a.php'); // one directory back, as the file path is always relative to the file in which include (or require or any of the others) is being called.
?>

Пример абсолютного:

<?php
     include('/path/to/server/root/some/folder/a.php'); // absolute path 
?>

Надеюсь это поможет.


ОБНОВИТЬ

Вы продолжаете говорить "это неправильно" или "это не работает", но вы действительно не очень хорошо объяснили свою файловую структуру. Поэтому я собираюсь добавить, что ваша структура папок выглядит так, например:

  • WEB ROOT
    • ProjectA
      • a.php
    • ProjectB
      • b.php

Теперь, если вы находитесь внутри a.php, вам может потребоваться b.php следующим образом:

require_once('../ProjectB/b.php');

Если вы были внутри b.php и хотели включить a.php, это могло бы быть следующим:

include_once('../ProjectA/a.php');

Обратите внимание, что я использовал include AND require, это зависит от вас от исследования, которое следует использовать.

  • 0
    Также следует сказать, что существуют другие методы, такие как require, require_once, include и include_once. Чтобы получить хорошее представление о различиях, прочитайте этот пост на StackOverflow: stackoverflow.com/questions/2418473/…
  • 0
    Выдает ошибку: Предупреждение: include (): Не удалось открыть /projectB/B.php для включения (include_path = '.; C: \ php \ pear') в C: \ wamp \ www \ projectA \ AA. PHP в строке 2
Показать ещё 5 комментариев
0

Классы ограничиваются "пространством", в котором они созданы. Вы не можете теоретически перекрестно опылять классы.

У вас есть два варианта:

1) Создать класс Singleton (см. Глобальный класс PHP в функциях?)

2) Расширить класс AA от класса BB, например:

Class AA extends class B{
   // Yada yada yada
}

Стоит прочитать следующие два ресурса:

http://php.net/manual/en/keyword.extends.php

http://php.net/manual/en/language.oop5.inheritance.php

0

если a.php и b.php находятся в одной папке:

в b.php:

<?php
  include_once(__DIR__ . '../projectA/A.php');
?>

__DIR__ - это динамический путь к папке с b.php.

http://php.net/manual/en/language.constants.predefined.php

если очень важно, чтобы a включал использование b.php, необходимо:

<?php
  require_once(__DIR__ . '../projectA/a.php');
?>
  • 0
    И укажите полный путь, если он находится в другом каталоге
  • 0
    Абсолютно нет необходимости в __DIR__ поскольку include всегда относится к каталогу файла, из которого он вызывается.
Показать ещё 4 комментария
0

просто requre a.php от b.php вот код:

require_once ( 'a.php');

Ещё вопросы

Сообщество Overcoder
Наверх
Меню