bien php

Bài 6 : Biến, phạm vi biến, các loại biến trong PHP

Trước khi bắt đầu vào bài học ngày hôm nay, mình muốn các bạn cần chuẩn bị tư tưởng như sau :

  • Bài viết nặng tính lý thuyết các bạn nên rửa mặt cho tỉnh táo, tránh buồn ngủ giữa chừng :p
  • Đây là lý thuyệt quan trọng, bạn cần đọc kĩ, nhưng không cần phải cố nhớ hết, bạn có thể lưu lại bài viết này để tham khảo khi cần, trong quá trình học và làm bạn sẽ nhớ từ từ
  • Có thắc mắc hay góp ý gì thì góp ý bên dưới comment nhé.

I. GIỚI THIỆU VỀ BIẾN

Biến trong PHP được thể hiện bởi dấu dollar $ và theo sau là tên của biến. Tên biến không phân biệt chữ hoa hay chữ thường. Tên biến phải bắt đầu bằng một chữ cái hay một dấu gạch nối_, theo sau là các chữ cái, chữ số hay là dấu gạch nối. Ví dụ:

var = "Bob";
$Var = "Joe";
echo "$var, $Var";

Trong PHP3 thì các biến phải luôn luôn được gán giá trị. Còn trong PHP4 . PHP5 thì cung cấp thêm một cách khác để gán giá trị cho biến: gán theo tham chiếu. Điều này có nghĩa là một biến mới có thể tham chiếu đến một biến nguyên thuỷ. Sự thay đổi của biến mới sẽ tác động đến biến nguyên thuỷ và ngược lại. Nó cũng có nghĩa là không có sao chép, do đó việc kết gán sẽ diễn ra nhanh hơn. Để thực hiện gán bằng tham chiếu, chỉ cần thêm & ở đầu tên của biến được gán.Ví dụ sau sẽ in ra dòng ‘My name is Bob’ hai lần:

<?php
$foo = 'Bob'; // gán giá trị 'Bob' cho $foo
$bar = &$foo; // Tham chiếu $foo qua $bar.
$bar = "My name is $bar"; // thay đổi $bar...
echo $bar;
echo $foo; // $foo cũng bị thay đổi.
?>

II. PHẠM VI CỦA BIẾN :

Các biến trong PHP có thể là một trong bốn loại phạm vi sau:

  • § Biến cục bộ.
  • § Tham số các hàm.
  • § Biến toàn cục.
  • § Biến static.

1) Biến cục bộ:

Một biến được khai báo trong một hàm thì được xem như là một biến cục bộ và nó chỉ được tham chiếu trong hàm đó. Bất kể việc gán giá trị bên ngoài hàm đều xem như là biến hoàn toàn khác với biến trong hàm đó. Chú ý khi thoát khỏi hàm mà biến cục bộ được khai báo, thì biến và giá trị của nó sẽ bị huỷ bỏ. Biến cục bộ có thuận lợi bởi nó loại bỏ những khả năng của các tác động không dự đoán được làm thay đổi kết quả từ các biến có thể truy cập toàn cục.Ví dụ:

$x = 4;
function assignx () {
$x = 0;
print "Biến x bên trong funtion là $x. <br>";
}
assignx();
print "Biến x bên ngoài hàm là $x. <br>";

Sau khi thực hiện sẽ có các kết quả như sau:

Biến x bên trong hàm là 0.
Biến x bên ngoài hàm là 4.

2) Tham số của hàm:

Cũng giống như nhiều ngôn ngữ lập trình khác, trong hàm của PHP có chứa tham số, bạn phải khai báo các tham số trong phần đầu của hàm. Mặc dù những tham số này nhận các giá trị đến từ bên ngoài hàm, nhưng chúng sẽ chỉ có thể truy cập một khi hàm tồn tại. Các tham số của hàm được khai báo sau tên hàm và bên trong dấu {. Ví dụ:

function x10 ($value) {
    $value = $value * 10;
    return $value;
}

Điều quan trọng cần phải chú ý là mặc dù bạn có thể truy cập và thao tác với các tham số trong hàm mà nó được khai báo, nhưng nó sẽ bị huỷ bỏ khi hàm kết thúc thực hiện.

3) Biến toàn cục:

Ngược lại với biến cục bộ, biến toàn cục có thể được truy cập từ bất cứ phần nào trong chương trình .Tuy nhiên, để có thể chỉnh sửa biến toàn cục bên trong 1 hàm thì nó phải được khai báo toàn cục sử dụng từ khoá GLOBAL ở phía trước.

Ví dụ:

$somevar = 15;
function addit() {
  GLOBAL $somevar;
  $somevar++;
  print "Somevar is $somevar";
}
addit();

Kết quả của $somevar là 16. Tuy nhiên, nếu bạn bỏ dòng lệnh GLOBAL $somevar; thì biến $somevar sẽ chỉ có giá trị là 1, bởi biến $somevar được xem như là biến cục bộ trong hàm addit( ).
Một cách khác để chỉ định một biến là toàn cục, chúng ta có thể sử dụng mảng $GLOBALS trong hàm. Ví du, khai báo biến $somevar là toàn cục bằng cách sử dụng mảng này như sau :

$somevar = 15;
function addit() {
    $GLOBALS["somevar"];
    $somevar++;
}
addit();
print "Somevar is $somevar";

4) Biến static:

Tương phản với các biến cục bộ của hàm là nó sẽ bị huỷ bỏ khi thoát khỏi hàm, thì biến static sẽ không mất giá trị của nó khi thoát khỏi hàm và vẫn giữ nguyên giá trị đó khi hàm được gọi lại lần nữa.

Bạn có thể khai báo một biến là static bằng cách dùng từ khoá STATIC đặt trước tên biến.
Ví dụ:

function keep_track() {
    STATIC $count = 0;
    $count++;
    print $count;
    print "<br>";
}
keep_track();
keep_track();
keep_track();

Kết quả là :

Gợi ý : Bạn là người mới và muốn tìm hiểu về Bitcoin nhưng không biết bắt đầu từ đâu? Click xem ngay Hướng Dẫn Đầu Tư Bitcoin Cho Người Mới nhé!

1
2
3

III. TRUY CẬP BIẾN TỪ TRÌNH DUYỆT

Khi dùng PHP, cũng như các phần mềm trung gian khác, thông tin được cung cấp tuỳ chọn dựa vào tham chiếu người dùng. Dĩ nhiên thông tin sẽ đến thông qua “form”. Thông tin cũng có thể đến từ những nơi khác, như “cookie” hay “sessions”.

1.Biến form:

Một trong những cách phổ biến là chuyển biến thông qua “form”. Mỗi thành phần trong form của chúng ta sẽ được gán tên và thuộc tính giá trị. Khi form được “submit” thì name=value sẽ được chuyển đến PHP. Chúng ta có thể chuyển đến PHP bởi phương pháp GET hoặc POST, tùy thuộc chúng ta chọn gì trong thuộc tính hành động của “form”. Một khi form được “submit”, những thành phần của form sẽ tự động trở thành những biến toàn cục trong PHP.

2.Sessions:

PHP cũng giống như ASP và ColdFusion đều hỗ trợ sessions. Vậy sessions là gì? Về cơ bản nó là một cách khác để duy trì trạng thái giữa các trang Web. Chúng ta bắt đầu một sessions bởi hàm start_session(). Khi đó PHP sẽ đăng ký một session ID duy nhất và gửi session ID đó về cho người dùng thông qua cookie. PHP sẽ tạo những tệp đáp trả trên server để có thể lưu giữ dấu vết của bất kỳ biến nào. Những tệp này có cùng tên với session ID.
Một khi session được tạo chúng ta có thể đăng ký bất kỳ biến số nào. Giá trị của nó sẽ được giữ trên một tệp ở máy chủ. Và như vậy trong thời gian sống của session những biến này sẽ được thực hiện bởi bất cứ trang nào trong cùng một tên miền mà không cần truy cập đến chúng.
Tuy nhiên có một số người dùng không cho phép cookie, khi đó PHP giữ dấu vết các session ID qua các querystring. Chúng ta có thể làm điều này bằng tay bằng cách cho sessiong ID phụ thuộc queryString, hoặc thay đổi tuỳ chọn cấu hình. Để thêm session Id đến querystring, ta dùng <?=SID?>. Nó sẽ tự động in ra một chuỗi như sau:

PHPSESSID=07e935k3kkjr0986s9d89fr9trg8rgrg20

Đoạn mã sau sẽ đăng ký một session ID và gán cho nó giá trị là: hello world

<?php
session_start();
session_register(“my_var”);
$my_var=”hello world”;
?>

c.Cookies:

Cookies là một mẩu thông tin nhỏ được lưu trữ trên máy tính người dùng. Một cookies chứa một đoạn văn bản nhỏ có thể đọc bởi máy chủ Web. Cookies cung cấp cách để có thể giữ dấu vết người sử dụng thông qua một số dịch vụ. Chúng ta phải nhớ rằng Web là môi trường trạng thái. Máy chủ Web sẽ không biết ai yêu cầu thông tin, cookies sẽ giúp chúng ta giữ thông tin người dùng khi họ di chuyển quanh site. Khi họ tồn tại , cookies trở thành một phần của yêu cầu HTTP gửi đến cho máy chủ Web. Những trước hết chúng ta cần thiết lập một cookies. Những người phát triển sẽ làm điều này, giống như mọi thứ khác trong PHP, chúng rất đơn giản. Dùng hàm setcookie() với những tham số theo sau:

setcookie(name, value, time_to_expire, path, domain, security setting);

Vi dụ:

setcookie(“mycookie”, “my_id”, time()+ (60*60*24*30),”/”,”.kungfuphp.com”,0)

Cookie này thiết lập những tham số như sau:

  •  Lưu trữ tên biến có tên là mycookie.
  • Giá trị của biến là my_id.
  • cookie có giá trị 30 ngày kể từ ngày thiết lập.
  • cookie có hiệu lực trong mọi trang của domain.
  • Nó có hiệu lực trong mọi chỗ của tền miền mydomain.com
  • Không có thiết lập an toàn đặc biệt

IV.Hằng số (Constant):

Hằng là một giá trị không thể chỉnh sửa được thông qua việc thực hiện chương trình. Bạn có thể định nghĩa một hằng bằng cách dùng hàm define( ). Một khi hằng được định nghĩa, nó không bao giờ bị thay đổi.
Chỉ có các kiểu dữ liệu boolean, integer, float, string mới có thể chứa các hằng. Bạn có thể nhận giá trị của một hằng bằng cách đơn giản chỉ định tên của nó. Không giống như với biến, bạn không cần khai báo $ trước một hằng. Bạn cũng có thể dùng hàm constant(), để đọc giá trị của hằng. Sử dụng hàm get_defined_constants( ) để nhận một danh sách tất cả các hàm đã được định nghĩa.
Các hằng được định nghĩa trước: PHP cung cấp một lượng lớn các hằng đã được định nghĩa trước để bất kỳ script nào cũng có thể chạy được

Một bình luận

  1. Xin chào, tôi comment ở đây chỉ nói với bạn: Chất lượng bài giảng khá kém.
    Tôi chỉ mới vào vừa đọc xong câu: “Tên biến không phân biệt chữ hoa hay chữ thường” thì đã biết web khá không chú ý đến từ trong bài viết rồi, mà đã vậy thì đọc tiếp làm gì nữa. Tôi nói điều này chỉ giúp cho bạn phát triển tốt hơn. Thanks!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *