@phpclubru

Страница 208 из 956
dot
16.05.2017
09:03:31
хмм сейчас попробую, вообще интересно я делаю юниттесты и они не работают потому что не видится пути к файлам

Roman
16.05.2017
09:04:02
file_exists?
Между file_exists и fopen может произойти сюрприз и файл исчезнет)

Like
16.05.2017
09:04:18
Google
dot
16.05.2017
09:04:23
и приходится абсолютные пути к файлам прописывать а они само собой разные на сервере и на локальной машине

Roman
16.05.2017
09:04:42
А почему бы не прописывать относительные пути?

dot
16.05.2017
09:05:39
не видятся почему то , нга сервере норм видятся а тут когда тесты пишу и там путь указываю относительный именно он не работает

Like
16.05.2017
09:06:16
укажи через __DIR__

Roman
16.05.2017
09:06:25
Какого вида пути?

Задай где-нибудь константу ROOT_PATH и используй ее.

dot
16.05.2017
09:07:59
require_once './testfold/file.php'; не видится

Roman
16.05.2017
09:08:14
А откуда скрипт вызывается?

__DIR__ . '/testfold/file.php';

Но это зависит от директории

А кто-нибудь знает, почему php криво работает с относительными путями? Они зависят от точки входа, или от директории, где текущий файл находится?

Oleg
16.05.2017
09:20:29
Файлы включаются исходя из пути указанного файла, или, если путь не указан, используется путь, указанный в директиве include_path. Если файл не найден в include_path, include попытается проверить директорию, в которой находится текущий включающий скрипт и текущую рабочую директорию перед тем, как выдать ошибку. Конструкция include выдаст warning, если не сможет найти файл; поведение отлично от require, который выдаст фатальную ошибку. Если путь указан — не важно, абсолютный (начинающийся с буквы диска или с \ в Windows или с / в Unix/Linux системах) или относительно текущей директории (начинающийся с . или ..) — директива include_path будет проигнорирована в любом случае. К примеру, если начинается с ../, парсер проверит родительскую директорию на наличие запрошенного файла. Для большей информации о том, как PHP обрабатывает включаемые файлы и включаемые пути, смотрите документацию для директивы include_path.

Google
Oleg
16.05.2017
09:20:50
http://php.net/manual/ru/function.include.php

Roman
16.05.2017
09:21:52
tmp.php: echo realpath('.') . PHP_EOL; require 'tmp/tmp.php'; tmp/tmp.php: echo realpath('.') . PHP_EOL; php tmp.php /var/www/html /var/www/html

Oleg
16.05.2017
09:24:49
Ну правильно

Добавь в обоих файлах

echo __DIR__ . PHP_EOL;

Roman
16.05.2017
09:26:05
__DIR__ - это абсолютный путь

Меня интересовали относительные

А секрет кроется в текущией working directory

Вообще, еще ни разу не встречал решения с chdir, все используют абсолютные пути с __DIR__ или DOC_ROOT

Видимо, чтобы наверняка)

dot
16.05.2017
09:27:29
у меня получилась рассинхронизация между путями на сервере и на локальной машине. Как теперь все теперь в норму привести вообще непонятно :(

Oleg
16.05.2017
09:28:09
Меня интересовали относительные
Суть проблемы не понятна.

Roman
16.05.2017
09:28:18
rsync -az local_dir user@host:remote_dir

Суть проблемы не понятна.
Понять, как php работает с относительными путями, из документации это не очень очевидно. Ответ - относительные пути считаются от текущий рабочей директории

Oleg
16.05.2017
09:30:55
Относительно чего? Относительно основного исполняемого файла, либо относительно подгруженного, в котором исполняется текущий код?

Dmitry
16.05.2017
09:31:00
Dmitry
16.05.2017
09:33:12
потому-что . - это не директория скрипта, это current dir

Roman
16.05.2017
09:33:46
Что не очень то очевидно без чтения документации

Google
Dmitry
16.05.2017
09:34:28
мм... ну да, но это не пхп, это базоые знания по операционной системе

Roman
16.05.2017
09:34:57
Да и в целом, current dir как раз можно получить через getcwd, а путь от текущего скрипта используется чаще

Dmitry
16.05.2017
09:35:48
Потому что текущая директория может меняться легко... как настройками веб-сервера, так и вызовом скриптов из консоли, например

Pavel
16.05.2017
09:35:58
current dir это вообще понятие из командной строки, его довольно странно применять в мире запуска php файлов.

Dmitry
16.05.2017
09:36:39
не, это понятие из линукса и никуда оно не девается при работе веб-сервера ;) он есть у любой программы

Pavel
16.05.2017
09:37:20
да у винды тоже есть current dir

Dmitry
16.05.2017
09:37:31
типа root@media:~# ls -la /proc/995/cwd lrwxrwxrwx 1 root root 0 May 16 12:37 /proc/995/cwd -> /var/spool/cron

Pavel
16.05.2017
09:38:19
только это все просто костыль чтобы автоматически подставлять префикс пути при доступе к разным командам и файлам.

Dmitry
16.05.2017
09:39:09
Не знаю, как можно функционал ядра ОС называть костылем ;)

Но в случае скриптов сайта - текущая директирия слишком непостоянный параметр, что бы от него отталкиваться для подключения скриптов

Roman
16.05.2017
09:40:55
Что все еще не значит, что это _действительно_ необходимо тащить за собой в скриптовый язык, добавление пути к текущему файлу в sys.path в питоне - сюда же

Хотя если мы работаем с внешними путями, то выбора особо и нет

Roman
16.05.2017
09:42:04
Так что все норм, я просто бомблю

Pavel
16.05.2017
09:42:23
Да это удобно когда у тебя 1 скрипт большой работает, но не удобно когда десятки разных php скриптов по директориям разбросаны, вот и вся логика.

Dmitry
16.05.2017
11:22:03
Привет

Roman
16.05.2017
11:27:03
Почему нельзя использовать что-то вроде new (static::getDocumentNamespace()) ?

Dmitry
16.05.2017
11:28:07
почему нельзя?

Roman
16.05.2017
11:42:29
Ну попробуй, ругается на "("

При том, что$docNamespace = static::getDocumentNamespace(); new $docNamespace норм

Dmitry
16.05.2017
11:43:25
а, ты про синтаксически

Google
Dmitry
16.05.2017
11:47:13
ну не ввели такого в синтаксический анализатор

просто new не функция, что бы принимать все подряд

чо испужался то ;)

Roman
16.05.2017
12:00:42
Я не испугался, я расстроился

Dmitry
16.05.2017
12:00:53
Не, это не тебе... тут вопрос про sql был

Roman
16.05.2017
12:03:21
Ох, я думл, что симфонивские формы будет проще использовать standalone :/

Есть еще альтернативы?

Алексей
16.05.2017
12:04:35
Да что то тишина, я и пошел дальше гуглить ) Думал, ни кого ) Ребят, подскажите, плиз Хочу подзапросом вернуть айдишники, которые мне нужны в основном запросе. Вот не сам запрос, а его "макет": SELECT * FROM Orders WHERE ( SELECT DISTINCT snum FROM Orders WHERE cnum = 2001 ) = snum; Тут бы все отработало хорошо. Но у меня во внутреннем запросе селект выбирает не одно поле а несколько. Можно ли обратиться к конкретному полю , а не целому набору? То есть, можно ли сделать как то так SELECT * FROM Orders WHERE ( SELECT ID, NAME FROM Orders WHERE PRICE > 200 ) .ID <---вот про то, как искать во внешнем запросе только по переданным ID из подзапроса, собственно, мой вопрос = snum;

Admin
ERROR: S client not available

Dmitry
16.05.2017
12:05:07
Ну так мой совет - унеси подзапрос в join и юзай там как хочешь уже.

Roman
16.05.2017
12:05:35
Или можно select (..) as t

Но подзапрос должен быть в select'е

Dmitry
16.05.2017
12:06:39
а не будет ли он при этом на каждую строчку исполняться? ;)

Roman
16.05.2017
12:06:50
Так он и в where будет)

Dmitry
16.05.2017
12:07:36
ну так и что? Будет фулскан первой таблицы, на кажду строчку - исполнение селекта, и потом фильтрация

Если оптимизатор не решит этот селект сам в джойн убрать

Roman
16.05.2017
12:08:27
Ну каков попрос... Join лучше, но они тоже медленные

Dmitry
16.05.2017
12:08:53
четырехколесные машины медленные

А вообще вот ссылко https://dev.mysql.com/doc/refman/5.7/en/subqueries.html - там все есть

Алексей
16.05.2017
12:09:08
О,то есть, джоин можно к подзапросу делать, а не только к таблице. прикольно. спасибо

Google
Dmitry
16.05.2017
12:09:29
Включая 10.11 - rewriting subqueries as joins

У тебя же мускуль?

Алексей
16.05.2017
12:10:09
ага

Roman
16.05.2017
12:13:18
В доке только про IN и NOT EXISTS

Dmitry
16.05.2017
12:14:25
А ему и нужно IN ибо PRICE > 200

равенство работает только если подзапрос одну строчку возвращает

да и это можно переписать в join, как бы a = b есть a IN (b)

Алексей
16.05.2017
12:15:25
спасибо, про отличие = и IN из головы вылетело. Сто пудово попался бы вскоре)

Artem
16.05.2017
12:17:49
нет тут среди народа пользователей thinkpad'ов? в частности старых моделей: t430, t420 и тд

Dmitry
16.05.2017
12:21:20
в авито работает кто? ;)

Algis
16.05.2017
12:21:47
люди там работают :)

что именно интересует ?

Artem
16.05.2017
12:27:34
инсайды намечаются?

:D

Dmitry
16.05.2017
12:27:53
Впечатления интересуют ;)

Algis
16.05.2017
12:44:31
мне нравится :)

или что-то конкретное нужно ?

Dmitry
16.05.2017
12:50:44
да нет, просто так пока ;) зато теперь знаю кого спросить конкретное ;)

Pavel
16.05.2017
14:58:46
Мне отказали на собеседовании в аивто!

Но по офису прогулку устроили

Like
16.05.2017
14:59:36

Страница 208 из 956