корневой путь не работает с php, включают

На самом деле это работает так же, как и другие.

struct T<'a> {
    f: &'a Fn(&'a i32),
}

Это определение говорит, что функция f будет жить в 'a, и ее параметр также должен жить 'a.

Рассмотрим время жизни fn main() как 'm, а время жизни внутренней области как 'i. Вы создаете свою структуру в main, поэтому ее время жизни будет 'm, она будет жить в main, если вы не перейдете в другую область.

  1. В вашем первом примере аргумент, который вы передаете в t.f, создан в 'i. Согласно определению; аргумент и функция должны жить в одной и той же жизни. Но 'm больше, чем 'i. Так что это не приемлемо.
  2. В вашем втором примере все то же самое, но ваша структура фактически не переживает 'i. Это можно считать временем жизни f равным его аргументу. Так что это обеспечивает определение.
  3. Третий пример аналогичен 1.

Если вы измените определение, как показано ниже, удалив ограничение из параметра. Таким образом, компилятор может определить подходящее время жизни аргумента, оно может быть больше, равно или меньше времени жизни.

//this means your f and it's argument's life time can be different
struct T<'a> {
    f: &'a Fn(&i32),
}

Все ваши примеры будут действительны.

Здесь вы можете найти рабочие примеры в Playground

43
задан Cœur 28 February 2017 в 14:41
поделиться

3 ответа

возможно, это немного нетрадиционное

, Если у меня есть случай как

/var/www/namedir/  <= root

/var/www/namedir/example/example.php <= file to include

-- directory when i need the include -- 
/var/www/namedir/dir1/page.php 
/var/www/namedir/dir1/dirA/page.php
/var/www/namedir/dir1/dirB/page.php

решение, которое я использую, просто. получите путь перед "Dir1"

что-то вроде этого

include (substr(dirname(__FILE__),0,strpos(dirname(__FILE__), '/dir1'))."/example/example.php");

, я нашел это полезным идентификатором, я должен переименовать основной subdir, например, от

/var/www/namesite/internalDirA/dirToInclude/example.php  
/var/www/namesite/internalDirA/dir1/dirA/example.php 
/var/www/namesite/internalDirA/dir1/dirB/example.php 

К

/var/www/namesite/dirReserved/dirToInclude/example.php  
/var/www/namesite/dirReserved/dir1/dirA/example.php 
/var/www/namesite/dirReserved/dir1/dirB/example.php 
0
ответ дан 26 November 2019 в 22:43
поделиться

Я предполагаю, что под корневой папкой вы подразумеваете корень веб-документа, а не корень файловой системы.

Для этого вы можете либо

  • добавить корневую веб-папку в include path и include ('example / example.php')
  • или вы можете include ($ _ SERVER ['DOCUMENT_ROOT']. '/ Example / example.php')
58
ответ дан 26 November 2019 в 22:43
поделиться

include () (и многие другие функции, такие как require (), fopen () и т. Д.), Все работают в локальной файловой системе, а не в корне сети.

Итак, когда вы что-то делаете вот так

include( "/example/example.php" );

Вы пытаетесь включить из корня вашей * nix-машины.

И хотя есть множество способов подойти к тому, что вы делаете, предложения Пола Диксона, вероятно, будут вашим лучшим выбором.

5
ответ дан 26 November 2019 в 22:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: