include i require

Atverstyt
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 9 lat
  • Postów:107
0

Witam,
ostatnio zacząłem temat o funkcjach include i require z jedną osobą. Ona twierdzi ze i w jednym i w drugim przypadku mozna uzyc pojedynczego lub podwojneg cudzyslowia. Natomiast mi sie zdaje ze w include trzeba uzyc podwojny a w require pojedynczy. Chyba ze to no zalezy od nawiasow...

nie wiem prosze o pomoc w tej sprawie.

johny_bravo
  • Rejestracja:około 19 lat
  • Ostatnio:ponad 13 lat
0

Nie ma znaczenia. include i require oczekuja stringa, tego zas mozna podac w cudzyslowiu lub apostrofie.

PS. pojedynczy cudzyslow to nie apostrof ;)


You need to learn how to walk
before you can run
prgtw
  • Rejestracja:około 23 lata
  • Ostatnio:około 5 lat
  • Postów:255
0
johny_bravo napisał(a)

[...]
PS. pojedynczy cudzyslow to nie apostrof

cudzyslowie - ort!
Znaczeniowo nie, choc w unicode maja dokladnie ta sama reprezentacje: U+2019 ;)

Do reprezentacji stringow mozna uzywac zarowno pojedynczych jak i podwojnych cudzyslowow. Roznica jest tylko taka, ze stringi zawarte w pojedynczych cudzyslowach nie sa parsowane pod katem podstawiania zmiennych i znakow specjalnych (np. \n, \s, \t), natomiast podwojne sa (co w przypadku statycznych tekstow zmniejsza szybkosc ich sparsowania)

Kopiuj
$zmienna = 'jakis tekst';

echo 'To jest \n$zmienna';# To jest \n$zmienna
echo "To jest \n$zmienna";# To jest <enter>jakis tekst
Kopiuj
#Slowa include, include_once, require, require_once nie sa funkcjami, wiec zapis
include('plik.php');
# jest nipoprawny semantycznie, choc zostanie on poprawnie wykonany. Poprawnie semantycznie wyglada tak:
include 'plik.php';
Atverstyt
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 9 lat
  • Postów:107
0

czyli prawidłowy zapis to:

Kopiuj
include("plik.php");
#lub
include 'plik.php';

Chodzi mi o poprawność zapisu. Choć trzeba zobaczyć że w kursach i książkach stosują:

Kopiuj
#dla include
include("plik.php");

#dla require
require('plik.php');
0

Atverstyt Nie ma to znaczenia , kazdys sposób ktory podałeś jest prawidłowy .Popacz w manualu

johny_bravo
  • Rejestracja:około 19 lat
  • Ostatnio:ponad 13 lat
0

Obojetne, moze byc z nawiasami i bez (dla obu instrukcji), z apostrofami i cudzyslowami.


You need to learn how to walk
before you can run
Atverstyt
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 9 lat
  • Postów:107
0

Dobra dzięki wielkie. Chciałem się upewnić.

Pozdrawiam.

Adam.Pilorz
  • Rejestracja:prawie 22 lata
  • Ostatnio:ponad 14 lat
  • Postów:2998
0
prgtw napisał(a)
Kopiuj
#Slowa include, include_once, require, require_once nie sa funkcjami, wiec zapis
include('plik.php');
# jest nipoprawny semantycznie, choc zostanie on poprawnie wykonany. Poprawnie semantycznie wyglada tak:
include 'plik.php';

Być może i semantycznie jest to niepoprawne (choć pierwszy raz słyszę taką wypowiedź), ale zwróć uwagę, że nawet w manualu PHP użyte są sformułowania "instrukcja include()" itp. (podkreślam nawiasy).


Grunt to uziemienie...
prgtw
  • Rejestracja:około 23 lata
  • Ostatnio:około 5 lat
  • Postów:255
0
Adam.Pilorz napisał(a)

Być może i semantycznie jest to niepoprawne (choć pierwszy raz słyszę taką wypowiedź), ale zwróć uwagę, że nawet w manualu PHP użyte są sformułowania "instrukcja include()" itp. (podkreślam nawiasy).

http://pl2.php.net/manual/en/function.include.php

Because include() is a special language construct, parentheses are not needed around its argument. Take care when comparing return value

Kopiuj
<?php
// won't work, evaluated as include(('vars.php') == 'OK'), i.e. include('')
if (include('vars.php') == 'OK') {
    echo 'OK';
}

// works
if ((include 'vars.php') == 'OK') {
    echo 'OK';
}
?> 

Note: Because this is a language construct and not a function [...]

Stad semantyczna niepoprawnosc (choc nawiasy tez dzialaja)</quote>

Adam.Pilorz
  • Rejestracja:prawie 22 lata
  • Ostatnio:ponad 14 lat
  • Postów:2998
0

Because include() is a special language construct, parentheses are not needed around its argument. Take care when comparing return value

not needed nie oznacza AFAIK, że to jest niepoprawne. Chyba, że gdzieś jest napisane, że po instrukcjach specjalnych (jak echo, include, itp.) NIE NALEŻY używać nawiasów.

Dla porównania:
NIE NALEŻY używać jako nagłówka, NALEŻY użyć <hx> zamiast tego.
NIE TRZEBA używać jako nagłówka, MOŻNA użyć <hx> zamiast tego.
Jeśli mówimy o semantycznej poprawności w tym przypadku, zdanie pierwsze jest bardziej adekwatne.

Chyba, że gdzieś czegoś nie doczytałem.

P.S. Nie to, żebym chciał się awanturować, ale mnie to zaintrygowało. Zawsze używałem nawiasów przy include/require/echo, bo mi tak wygodniej, a tu nagle ktoś mówi, że to niepoprawne, choć działa :).


Grunt to uziemienie...
prgtw
  • Rejestracja:około 23 lata
  • Ostatnio:około 5 lat
  • Postów:255
0

Ja też oczywiście nie chcę się kłócić, wymieniamy się tylko wiedzą i poglądami. Głownie chodziło mi o "special language construct", więc skoro to nie funkcja tylko konstrukcja językowa więc teoretycznie nawiasy (które pasują do i oznaczają wywołanie funkcji) nie pasują tutaj.

Kolejna ważna rzecz:

Because this is a language construct and not a function, it cannot be called using variable functions

czyli:

Kopiuj
$func = 'strlen';
print $func('abc'); # 3

# ale

$func = 'require_once';
$func('plik.php'); # fatal error, call to undefined func

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.