2008-08-16 34 views
5

Tôi muốn xác định một cái gì đó như thế này trong php:Làm cách nào để thiết lập các biến toàn trang web trong php?

$EL = "\n<br />\n"; 

và sau đó sử dụng biến đó như là một "endline" đánh dấu trên tất cả trang web của tôi, như thế này:

echo "Blah blah blah{$EL}"; 

Làm thế nào để xác định $ EL một lần (chỉ trong 1 tệp), bao gồm nó trên mỗi trang trên trang web của tôi và không phải phải tham chiếu nó bằng câu lệnh global $EL; (kỳ lạ ngược) trong mọi chức năng của trang?

Trả lời

6

Hầu hết các trang web PHP phải có tệp (tôi gọi đó là tiêu đề) mà bạn đưa vào mỗi trang của trang web. Nếu bạn đặt rằng dòng mã đầu tiên trong file header, sau đó bao gồm nó như thế này trên mỗi trang:

include 'header.php'; 

bạn sẽ không cần phải sử dụng từ khóa toàn cầu hay bất cứ điều gì, dòng thứ hai của mã bạn viết nên công việc.

Chỉnh sửa: Oh xin lỗi, điều đó sẽ không hoạt động bên trong các chức năng ... bây giờ tôi thấy sự cố của bạn.

Chỉnh sửa # 2: Ok, lấy lời khuyên ban đầu của tôi với tiêu đề, nhưng sử dụng define() thay vì biến. Những công việc bên trong các chức năng sau khi được đưa vào.

-1

IIRC giải pháp chung là một tệp đơn giản chứa các khai báo của bạn, mà bạn bao gồm trong mọi tệp nguồn, chẳng hạn như 'constants.inc.php'. Ở đó bạn có thể xác định một loạt các biến ứng dụng rộng rãi sau đó được nhập vào mỗi tệp.

Tuy nhiên, bạn phải cung cấp chỉ thị bao gồm trong mỗi tệp nguồn duy nhất mà bạn sử dụng. Tôi thậm chí còn thấy một số dự án sử dụng kỹ thuật này để cung cấp bản địa hóa cho một số ngôn ngữ. Tôi thích cách gettext hơn, nhưng có lẽ biến thể này dễ làm việc hơn với người dùng trung bình.

chỉnh sửa Đối với vấn đề của bạn tôi recomment việc sử dụng $ GLOBALS [], xem Example #2 để biết chi tiết.

Nếu đó là vẫn chưa được áp dụng, tôi muốn cố gắng digg xuống đối tượng PHP5 và tạo ra một Singleton tĩnh cung cấp giao tiếp cần thiết hằng tĩnh (http://www.developer.com/lang/php/article.php/3345121)

-1

Sessions sẽ được đặt cược tốt nhất của bạn, nếu dữ liệu được sử dụng cụ thể, khác chỉ sử dụng một tập tin conifg. config.php:

<?php 
$EL = "\n<br />\n"; 
?> 

Sau đó, trên mỗi trang thêm

require 'config.php' 

các bạn sẽ có thể truy cập $ EL trên trang đó.

3

Có vẻ như công việc của một hằng số. Xem hàm define().

0

@svec có điều này, bạn chỉ cần bao gồm tệp bên trong hàm này. Đây là cách phần lớn phần mềm của tôi hoạt động.

function myFunc() 
{ 
require 'config.php'; 
//Variables from config are available now. 
} 
1

Bạn đang sử dụng PHP5? Nếu bạn định nghĩa hàm __autoload() và sử dụng một lớp với một số hằng số, bạn có thể gọi chúng ở nơi bạn cần chúng. Điều tiết tăng nặng chỉ khoảng này là bạn phải gõ một cái gì đó lâu hơn một chút, giống như

MyClass::MY_CONST 

Lợi ích là nếu bạn quyết định thay đổi cách mà bạn xử lý dòng mới, bạn chỉ cần thay đổi nó trong một nơi. Tất nhiên, có thể âm là bạn đang gọi bao gồm một hàm phụ (__autoload()), chạy hàm đó (khi bạn tham chiếu lớp), sau đó tải một tệp khác (tệp lớp của bạn). Đó có thể là chi phí cao hơn giá trị của nó.

Nếu tôi có thể đưa ra đề xuất, nó sẽ tránh loại lặp lại này yêu cầu thẻ lặp lại (như <br />). Nếu bạn có thể thiết lập một cái gì đó nhiều hơn một chút mẫu-esque, bạn có thể xử lý của nl mà không cần phải rõ ràng loại chúng. Vì vậy, thay vì

echo "Blah Blah Blah\n<br />\n"; 

thử:

<?php 
if($condition) { 
?> 
<p>Blah blah blah 
<br /> 
</p> 
<?php 
} 
?> 

Nó chỉ có vẻ với tôi như gọi lên lớp hoặc bao gồm các biến trong phạm vi chức năng cũng như ra là rất nhiều công việc mà không cần phải được thực hiện và, nếu có thể, các loại tình huống đó là tốt nhất nên tránh.

0

Tùy chọn khác là sử dụng đối tượng có thuộc tính tĩnh công cộng. Tôi đã từng sử dụng $ GLOBALS nhưng hầu hết các biên tập viên không tự động hoàn thành $ GLOBALS. Ngoài ra, các lớp không khởi tạo có sẵn ở khắp mọi nơi (bởi vì bạn có thể instatiate ở khắp mọi nơi mà không nói với PHP bạn sẽ sử dụng lớp). Ví dụ:

<?php 

class SITE { 
    public static $el; 
} 

SITE::$el = "\n<br />\n"; 

function Test() { 
    echo SITE::$el; 
} 

Test(); 

?> 

chí này ra <br />

Đây cũng là dễ dàng hơn để đối phó với hơn costants như bạn có thể đặt bất kỳ loại giá trị trong phạm vi tài sản (mảng, chuỗi, int, vv) trong khi hằng không thể chứa mảng.

Điều này đã được đề xuất cho một người dùng của tôi trên PhpEd forums.

0

svec, sử dụng khung công tác PHP. Chỉ cần bất kỳ - có rất nhiều người trong số họ ra khỏi đó. Đây là cách phù hợp để thực hiện. Với khuôn khổ bạn có một mục nhập điểm cho ứng dụng của bạn, do đó việc xác định các biến trên toàn trang web thật dễ dàng và tự nhiên. Ngoài ra, bạn không cần phải quan tâm đến việc bao gồm các tệp tiêu đề cũng như không kiểm tra xem người dùng có đăng nhập vào mọi trang hay không - khung làm việc tốt sẽ làm nó cho bạn.

Xem:

Đầu tư một chút thời gian trong việc học một trong số họ và nó sẽ trả lại rất sớm.

1

Đừng này define ('el','\n\<\br/>\n'); tiết kiệm nó như el.php

sau đó bạn có thể bao gồm bất kỳ tập tin bạn muốn sử dụng, tức là

something'.el

echo'; // lưu ý tôi chỉ cần thêm el ở cuối dòng hoặc ở phía trước

Hope trợ giúp này

Chú ý xin vui lòng loại bỏ các '\' sau < BR kể từ khi tôi đã phải đặt nó trong hoặc nó sẽ không hiển thị thẻ BR trên trả lời ...

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