Я пытаюсь сделать свой composer пакет, на основе плагина в github. Вот он
https://github.com/chapagain/php-swiss-ephemeris
Тут есть один нюанс:
php скрипт использует и запускает внешнюю программу Швейцарских Эфемерид в этом плагине на который я опираюсь он находится в папке sweph.
Я хочу сделать свой composer пакет который бы внутри запускал внешнюю программу получал бы у нее данные, дальше шла бы стандартная обработка данных и приведение в тот вид что мне нужен.
У меня сейчас такая структура файлов:
src
--sweph
--Natal.php
vendor
composer.json
index.php
Содержание composer.json:
{
"name": "tripcollor/astro",
"description": "PHP library for calculations astro",
"keywords": [
"astrology"
],
"authors": [
{
"name": "tripcollor",
"email": "email@yandex.ru"
}
],
"require": {
"php": ">=5.6"
},
"require-dev": {
},
"autoload": {
"psr-4": {
"Astrology\\": "src"
}
}
}
Я хочу чтобы в index.php можно было подключить use Astrology\Natal и воспользоваться какой либо функцией, а подключаемый файл src/Natal.php в свою очередь должен вызывать внутри себя внешнюю программу которая находится рядом с ним в одной директории в папке sweph. Примерно вот так это должно выглядеть:
Код файла src/Natal.php
<?php
namespace Astrology;
use DateTime;
class Natal
{
public function test()
{
$libPath = './sweph/';
putenv("PATH=$libPath");
$birthDate = new DateTime("1990-06-03T13:30:00Z");
$latitude = 55.5557;
$longitude = 52.5752;
$timezone = 0;
$timezone * (60 * 60);
$birthTimestamp = strtotime($birthDate->format('Y-m-d H:i:s'));
$utcTimestamp = $birthTimestamp - $offset;
$date = date('d.m.Y', $utcTimestamp);
$time = date('H:i:s', $utcTimestamp);
exec ("swetest -edir$libPath -b$date -ut$time -p0123456789ABCDEFGHIJKLMNOPQRSTUVWX -xz -emos -fPls -g, -head", $output_t);
print_r($output_t);
}
}
Код файла index.php тут подключаем и используем наш плагин:
<?php
require './vendor/autoload.php';
use Astrology\Natal;
$Natal= new Natal();
$Natal->test();
Так не работает дело видимо в том, что $libPath = './sweph/'; обращается к этой папке не из файла src/Natal.php как мне нужно, а из файла в котором я его подключаю то есть в Index.php. Что нужно прописать в $libPath что бы все работало как задумано, и чтобы это работало при загрузке пакета в другой проект из composer. Можно конечно вынести папку sweph в корень сайта а здесь передавать путь к ней $Ayurveda->test('./path/sweph/'); относительно файла Index.php для этого примера, но охота в итоге чтобы все выполнялось под капотом. Подскажите пожалуйста.