include i require

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.

0

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

PS. pojedynczy cudzyslow to nie apostrof ;)

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)

$zmienna = 'jakis tekst';

echo 'To jest \n$zmienna';# To jest \n$zmienna
echo "To jest \n$zmienna";# To jest <enter>jakis tekst
#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';
0

czyli prawidłowy zapis to:

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

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

#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

0

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

0

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

Pozdrawiam.

0
prgtw napisał(a)
#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).

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

<?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>

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 :).

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:

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

# ale

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1