Ghi chú. Bài đăng này đã hơn một năm tuổi và vì vậy thông tin ở đây có thể đã lỗi thời. Nếu bạn phát hiện ra điều gì đó, vui lòng để lại nhận xét và chúng tôi sẽ cố gắng khắc phục
- Chia sẻ cái này
- Tweet cái này đi
- Chia sẻ cái này
Khi tạo các hàm trong PHP, có thể cung cấp các tham số mặc định để khi một tham số không được truyền vào hàm thì nó vẫn có sẵn trong hàm với giá trị được xác định trước. Các giá trị mặc định này cũng có thể được gọi là các tham số tùy chọn vì chúng không cần được chuyển đến hàm. Tôi đã thấy loại mã này được sử dụng không chính xác khá thường xuyên gần đây vì vậy tôi nghĩ rằng tôi sẽ xem xét nó trong một bài đăng
Việc tạo tham số mặc định trong hàm rất đơn giản và khá giống với phép gán biến thông thường. Hàm sau có một tham số duy nhất được đặt thành 1 nếu nó không được truyền khi gọi hàm
function testFunction[$a = 1]
{
return $a;
}
Chức năng này không làm được gì nhiều, nhưng có thể được sử dụng theo cách sau. Nếu tham số không được thêm vào lệnh gọi hàm thì giá trị mặc định sẽ được sử dụng, nếu nó được thêm vào thì giá trị này sẽ được sử dụng thay thế
echo testFunction[]; // prints 1
echo testFunction[2]; // prints 2
Có thể sử dụng bao nhiêu đối số mặc định cần thiết trong một hàm. Hàm sau có bốn tham số, ba trong số đó là tùy chọn
function testFunction[$a, $b = 1, $c = 1, $d = 1]
{
return $a + $b + $c + $d;
}
Chức năng này có thể được chạy theo cách sau
echo testFunction[1]; // prints 4
echo testFunction[1, 2]; // prints 5
Cũng có thể sử dụng mảng làm tham số mặc định như trong hàm sau
function testArrayFunction[$array = array['someKey']]
{
if [isset[$array['someKey']]] {
return $array['somekey'];
}
}
Một điều quan trọng cần nhớ khi tạo các tham số mặc định là bạn nên thêm chúng vào cuối các tham số bắt buộc mà hàm của bạn có. Về mặt cú pháp, việc viết một hàm trong đó các tham số mặc định không nằm ở cuối định nghĩa hàm là hợp lệ, nhưng điều này sẽ dẫn đến các vấn đề. Thực hiện chức năng sau
function testMultiFunction[$a, $b = 1, $c, $d = 1]
{
return $a + $b + $c + $d;
}
Không thể thực sự sử dụng bất kỳ tham số mặc định nào được đặt trước bất kỳ tham số không mặc định nào. Trong trường hợp đoạn mã trên $b sẽ không bao giờ có giá trị mặc định là 1. PHP không có cách nào để biết rằng bạn muốn bỏ qua một tham số cụ thể và do đó sẽ chỉ định chúng như mọi khi, theo thứ tự chúng được truyền. Cố gắng bỏ qua một trong các tham số sẽ dẫn đến lỗi cú pháp
echo testFunction[1, , 1]; // syntax error
Chỉ trong trường hợp một số bạn đang nghĩ rằng có thể chỉ cần thêm một giá trị null làm tham số, bạn nên lưu ý rằng điều này cũng sẽ không hoạt động. Về cơ bản, những gì bạn đang làm là truyền một giá trị [trong trường hợp này là null] và do đó, tham số mặc định sẽ không được sử dụng. Sử dụng hàm trên, đoạn mã sau sẽ in 3. Đây là kết quả của tổng 1 + null + 1 + 1, giá trị null chuyển thành 0 khi được sử dụng trong phép tính
echo testFunction[1, null, 1]; // prints 3
Các tham số mặc định có thể được sử dụng để điều khiển chức năng theo một cách nào đó. Giả sử bạn muốn tạo một hàm sẽ in ra một biến nếu hàm đó được yêu cầu làm như vậy. Để làm điều này, bạn sẽ tạo một tham số tùy chọn thứ hai sẽ in một giá trị đã cho nếu giá trị true được truyền vào
________số 8Kiểu chức năng này có thể được nhìn thấy trong nhiều hệ thống CMS, thường là trong các chức năng mẫu và có thể chạy theo cách sau
testFunction[2, true]; // prints and returns 3
testFunction[2]; // returns 3
testFunction[2, false]; // returns 3
Lỗi mà tôi thường thấy nhất là khi các lập trình viên sao chép và dán định nghĩa hàm và sử dụng nó làm lệnh gọi chính hàm đó. Đoạn mã sau [hoàn toàn hợp pháp] gọi hàm ví dụ testMultiFunction[] ở trên
echo testFunction[]; // prints 1
echo testFunction[2]; // prints 2
0Những gì chúng ta đang làm ở đây là xác định các biến $b, $c và $d là 1, sau đó các biến này được chuyển đến hàm dưới dạng tham số. Trong PHP, có thể chạy mã trong các lời gọi hàm, kết quả của nó sau đó được chuyển đến hàm. Tuy nhiên, điều này hơi lãng phí vì tất cả những gì chúng ta đang làm ở đây [và điều thường xảy ra] là xác định các biến không bao giờ được sử dụng sau lệnh gọi hàm này. Để dọn dẹp mã này, chỉ cần xóa các định nghĩa biến và giữ lại các giá trị mà bạn muốn chuyển đến hàm
echo testFunction[]; // prints 1
echo testFunction[2]; // prints 2
1Điều này có cùng đầu ra như mã trước đó, nhưng nó là một cách rõ ràng hơn nhiều để gọi hàm. Nếu bạn lo lắng về việc không thể biết tham số nào làm gì thì hãy thêm nhận xét trước lệnh gọi hàm để cung cấp thêm thông tin cho bạn
PHP
- Chia sẻ cái này
- Tweet cái này đi
- Chia sẻ cái này
Được viết bởi. Philip Norton
Phil là người sáng lập và quản trị viên của #. viết mã và là một chuyên gia CNTT làm việc ở Tây Bắc Vương quốc Anh. Tốt nghiệp năm 2003 tại Đại học Aberystwyth với bằng Thạc sĩ Khoa học Máy tính Phil trước đây đã từng làm quản trị viên cơ sở dữ liệu, trên bàn trợ giúp CNTT, huấn luyện viên hệ thống, kiến trúc web, tư vấn khả năng sử dụng, blogger và chuyên gia SEO. Phil có nhiều kinh nghiệm xây dựng và duy trì các trang web PHP cũng như làm việc với các công nghệ liên quan như JavaScript, HTML, CSS, XML, Flex, Apache, MySQL và Linux
Bạn muốn biết thêm?
Hãy để chúng tôi giúp. Thuê chúng tôi để cung cấp dịch vụ đào tạo, tư vấn, xử lý sự cố và hơn thế nữa
hỗ trợ chúng tôi
Hãy ủng hộ chúng tôi và cho phép chúng tôi tiếp tục viết bài
Bình luận
Tiếp tục gửi bài thứ như thế này tôi thực sự thích nó
robot ngoại hối [Thứ 4, 10/02/2010 - 04. 41]
Mã hóa tuyệt vời
sarah [Thứ Hai, 01/03/2011 - 19. 57]
Mới học PHP [mặc dù đã có kinh nghiệm với ngôn ngữ lập trình khác] và bài viết này thực sự đã giúp tôi nắm bắt cách PHP xử lý các tham số. Cảm ơn