2010-08-24 62 views
11

Có cách nào có thể khi trong một tệp - xin lưu ý, chỉ một tệp. Để gọi hàm khi chưa được xác định, ví dụ:Gọi một hàm trước khi nó được xác định | PHP

<?php 

echo global_title(); 

function global_title() 
{ 
    $title = $_GET['name']; 

    return $title; 
} 

?> 

Tôi không biết cách giải thích điều này, nhưng không hoàn toàn có thể đúng không? Điều gì về biến từ một tệp khác (không bao gồm tệp) có thể được gọi trong một tệp khác, ví dụ:

config.php

<?php 

$db = "localhost"; 

?> 

index.php

<?php 

// I do not want it to be accessed by including it or using sessions 

echo $db; 

?> 

Biết ý tôi chứ? :)

+2

bạn đã thử code của bạn chưa? –

Trả lời

24

Bạn có thể gọi hàm được xác định sau khi gọi. Đó là vì PHP đầu tiên phân tích cú pháp tệp và sau đó thực hiện nó.

Đối với biến - điều này là không thể, bạn phải bao gồm tệp.

+9

Vâng, các hàm không được đặt trong một điều kiện (như 'if') có sẵn sau khi biên dịch tập tin đó. Biến chỉ có sẵn sau khi thực hiện đạt đến dòng đó ... – ircmaxell

+0

@ircmaxell lưu ý thú vị, tại sao ai đó sẽ xác định một hàm bên trong một câu lệnh if? Nó sẽ không được tốt hơn để đánh giá bất cứ điều gì nếu tuyên bố là đánh giá bên trong chức năng? –

+1

@DougMolineux, Đọc trên trình biên dịch có điều kiện. Về cơ bản, nếu nó không cần thiết để xử lý các chức năng, không. – Pacerier

1

Bạn không thể gọi chức năng không xác định, nó sẽ gây ra lỗi nghiêm trọng. mặc dù trong mã thủ tục, nó có thể được gọi và sau đó được xác định. Khi kịch bản được phân tích cú pháp đầu tiên sau đó được thực thi. bao gồm không quan trọng, chúng hoạt động như thể chúng được viết trong tập tin chính xác.

không có thứ gì như một biến "từ tệp". nếu mã định nghĩa biến không chạy, nó không thể ở đó.

2

Tôi vừa phát hiện ra rằng bạn có thể gọi hàm nếu nó được xác định sau trong cùng một tệp.
Nhưng nếu nó được xác định trong một tệp khác, bạn phải bao gồm tệp trước khi gọi hàm.

my_func(); 
function my_func() {...} 
---> No problem 

nhưng

my_func(); 
include_once 'define_my_func.php'; 
---> PHP Fatal error 

Nó giống như một chức năng có điều kiện như trong ví dụ 2 trên doc trên user-defined functions

Các vấn đề liên quan