SlideShare uma empresa Scribd logo
1 de 15
Hàm (function)
• Khi lập trình trong WordPress (và có thể ở các CMS khác),
chúng ta sẽ sử dụng hàm rất nhiều nên ở đây mình xin nói rõ
về hàm cũng như các quy tắc bạn cần biết khi sử dụng hàm.
Trước hết, mình xin nói rõ rằng khi khai báo hàm, bạn có thể
khai báo nó vào tập tin functions.php trong theme rồi có thể
gọi nó trong một template bất kỳ như index.php chẳng hạn.
Hàm trong PHP là gì?
• Hàm nghĩa là một tập hợp các đoạn mã và nó sẽ thực thi các
đoạn mã đó khi gọi hàm ra, nó sẽ được thực thi lại nhiều lần
hoặc thực thi trong một trường hợp nhất định. Có nghĩa là khi
bạn tạo hàm thì các đoạn mã bên trong đó sẽ không thực thi
cho đến khi được gọi ra bên ngoài.
• Ví dụ, trong WordPress có rất nhiều hàm có sẵn để bạn làm
các việc gì đó mà không cần phải viết code nhiều. Hoặc trong
PHP cũng có nhiều hàm được định nghĩa sẵn để làm một số
việc, và bạn cũng có thể tự tạo hàm riêng cho mình.
Phân biệt hàm
• Khi nhìn vào một đoạn mã, nếu bạn thấy một từ khoá mà có
cặp dấu ngoặc đằng sau thì chính là hàm. Ví
dụ:get_the_title(), the_permalink(),…đều là hàm. Và đôi khi
trong hàm cũng có tham số như wp_nav_menu( $args
), get_posts( $args ). Tham số bên trong thường là người dùng
có thể đặt tên biến bất kỳ, hoặc viết bằng giá trị
như dynamic_sidebar('sidebar').
Cách tạo một hàm
• Để tạo một hàm, chúng ta khai báo bằng từ khoá function
tên_hàm() như sau:
• function tinh_tong()
• {
• // Code của hàm viết trong này
• }
• Trong đó, các đoạn mã của hàm phải được đặt trong cặp dấu
ngoặc nhọn ({}) của nó.
• Và sau đó, chúng ta có thể gọi hàm ra bằng cách viết tên hàm.
Ví dụ: tinh_tong().
• <?php
• function tinh_tong()
• {
• $x = 5;
• $y = 10;
• $total = $x + $y;
• echo $total;
• }
•
• tinh_tong(); // Gọi hàm
• ?>
Return và Echo trong hàm
• Khi làm việc với hàm, có thể bạn sẽ thấy rất nhiều từ
khoá return trong hàm. Bạn học PHP từ đầu tới giờ cũng biết từ
khoá echo là để hiển thị một cái gì đó. Nhưng khi sử dụng hàm,
bạn cần biết thêm một từ khoáreturn. Cũng giống như echo,
bạn có thể return các kiểu giá trị hoặc bất cứ cái gì.
Và return chỉ được sử dụng trong hàm.
• <?php
• function get_site_name()
• {
• $site_name = get_bloginfo( 'name' );
• return $site_name;
• }
• get_site_name(); // Không hiển thị gì cả
• var_dump( get_site_name() ); // Dump
• echo '<br/>';
• echo get_site_name(); // Phải echo ra mới hiển thị được giá trị được return
• ?>
• Để giải thích từ khoá return cho trọn vẹn cũng khó. Nhưng bạn có
thể hiểu, return nghĩa là bạn trả giá trị của hàm ra bên ngoài nhưng
sẽ không hiển thị ra, giống như giá trị của hàm đó đã được chuẩn bị
sẵn để sử dụng vậy. Khi return ra, bạn chỉ có thể thấy nó thông qua
việc echo hoặc var_dump nó. Và bạn cũng có thể sử dụng giá trị
được return để sử dụng với các toán tử hoặc các điều kiện rẽ
nhánh.
• Như vậy, bạn có thể tạm hiểu là nếu bạn echo giá trị trong hàm thì
giá trị sẽ được xuất ra màn hình. Còn nếu retun giá trị trong hàm thì
nó chỉ gửi dữ liệu về, bạn muốn xuất ra phải sử dụng return.
• Lưu ý là trong một hàm, bạn chỉ có thể return 1 lần duy nhất.
Hàm có tham số
• Một trong những tính năng hữu dụng nhất của hàm là bạn có
thể truyền tham số vào trong giá trị của hàm. Ví dụ như bạn tạo
một hàm tính tổng, cho phép tính tổng của hai số mà người
dùng nhập vào thì bạn sẽ cần sử dụng tham số, sau đó truyền
giá trị của tham số vào bên trong hàm để nó xử lý rồi trả về kết
quả.
• Để khai báo tham số trong hàm, bạn sẽ viết thêm các biến vào
phần tên hàm như sau:
• <?php
• function tinh_tong( $x, $y )
• {
• $total = $x + $y;
• return $total;
• }
•
• // Gọi hàm ra kèm giá trị tham số
• echo tinh_tong( 5,15 );
• ?>
• Điều này có nghĩa là, bạn mặc định hàm tinh_tong() có hai tham số là $x và $y theo thứ
tự giá trị đứng trước là x, đứng sau là y. Sau đó trong nội dung của hàm, chúng ta có
hàm $total là tổng của $x và $. Cuối cùng là trả về biến $total để in kết quả.
• Như bạn thấy hàm đó chúng ta không gán giá trị cho $x và $y mà việc gán giá trị sẽ được
làm khi gọi hàm ra. Khi gọi ra, chúng ta viết hai tham số vào hàm và hai giá trị tham số
này sẽ có thứ tự giống như bạn đã thiết lập khi tạo hàm, tức là giá trị đứng trước là $x,
đứng sau là $y. Và trong ví dụ, tinh_tong(5,15) nghĩa là ta khai báo $x = 5, $y = 15 vào
trong hàm để nó thực thi.
• Nói qua một xíu về WordPress, như bạn thấy từ các bài trước cho đến bài này mình sử
dụng hàmget_bloginfo() rất nhiều để lấy ra thông tin của website. Và đôi khi bạn thấy
mình có viết tham số vào hàm này như get_bloginfo('name'), get_bloginfo('url'). Và các
tham số đó chính là tham số dạng chuỗi trong hàm get_bloginfo(). Nếu bạn xem code tạo
hàm này trong tập tin /wp-includes/general-template.php sẽ thấy nó cũng khai báo hai
tham số vào hàm này để người dùng truyền vào khi sử dụng.
• Tips: Khi đọc tra cứu code tạo codex.wordpress.org, hãy kéo xuống cuối trang để biết
code đó được tạo ra ở tập tin nào trong mã nguồn.
Phạm vi biến của hàm
• Khi sử dụng hàm, đôi khi chúng ta cần đưa một biến nào đó mà
bạn đã khai báo trong code vào trong hàm để sử dụng lại. Ví dụ
• <?php
• function phien_ban()
• {
• return $wp_version;
• }
• echo phien_ban();
• ?>
• Ở đoạn trên, mình đưa biến $wp_version vào hàm phien_ban(). Do mình đang
viết code trong theme WordPress nên mình muốn sử dụng các biến có sẵn của
WordPress, cụ thể biến $wp_version để in phiên bản của mã nguồn WordPress
trên website.
• Thế nhưng nếu bạn xem kết quả, bạn sẽ thấy lỗi là “Notice: Undefined variable:
wp_version in /xxx/wp-content/themes/hoc-php/index.php on line 4“. Nghĩa là nó
báo lỗi có một biến không xác định tên wp_version ở dòng số 4 trong cái tập tin
kia. Nhưng đây là biến có sẵn của WordPress mà, tại sao lại không xác định?
• Ở đây, bạn phải hiểu rằng biến $wp_version chỉ được khai báo ở một tập tin nào
đó trong mã nguồn và bạn chỉ có thể sử dụng nó bên ngoài một hàm. Khi đưa
biến vào hàm, PHP tự hiểu rằng cái biến đó là một biến riêng của hàm được khai
báo.
• Vậy làm sao có thể sử dụng biến có sẵn như $wp_version trong hàm của chúng
ta? Đó là chúng ta sẽ cần khai báo thêm từ khoá global vào tên biến cần sử dụng
lại trong hàm như sau:
Lời kết
• Đây là một trong các bài quan trọng nhất trong PHP nói chung
và lập trình WordPress nói riêng vì hàm có rất bổ ích sau này
khi bạn viết code, nó sẽ giúp bạn xử lý các tác vụ trong code tốt
hơn cũng như có thể viết một hàm để làm một công việc mang
tính chất lặp đi lặp lại. Nên mình mong bài này có thể đã giúp
bạn hiểu qua rất rõ về khái niệm hàm trong PHP.

Mais conteúdo relacionado

Mais procurados

Hướng dẫn lập trình CMS Joomla 2.5
Hướng dẫn lập trình CMS Joomla 2.5 Hướng dẫn lập trình CMS Joomla 2.5
Hướng dẫn lập trình CMS Joomla 2.5 ZendVN
 
Các quy định& chuẩn trong lập trình NukeViet
Các quy định& chuẩn trong lập trình NukeVietCác quy định& chuẩn trong lập trình NukeViet
Các quy định& chuẩn trong lập trình NukeVietVu Thao
 
Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)
Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)
Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)KhanhPham
 
Lập trình hướng đối tượng trong PHP
 Lập trình hướng đối tượng trong PHP Lập trình hướng đối tượng trong PHP
Lập trình hướng đối tượng trong PHPNETKO Solution
 
Học PHP cơ bản - Mảng trong PHP ( CH002 - Bài 1.2)
Học PHP cơ bản - Mảng trong PHP ( CH002 - Bài 1.2)Học PHP cơ bản - Mảng trong PHP ( CH002 - Bài 1.2)
Học PHP cơ bản - Mảng trong PHP ( CH002 - Bài 1.2)KhanhPham
 
Lap trình web PHP - Các hàm xử lý số number trong PHP (CH002 Bài 3)
Lap trình web PHP - Các hàm xử lý số number trong PHP  (CH002 Bài 3)Lap trình web PHP - Các hàm xử lý số number trong PHP  (CH002 Bài 3)
Lap trình web PHP - Các hàm xử lý số number trong PHP (CH002 Bài 3)KhanhPham
 
Giao trinh thiet ke web bai 4 - php
Giao trinh thiet ke web   bai 4 - phpGiao trinh thiet ke web   bai 4 - php
Giao trinh thiet ke web bai 4 - phpcashdeptrai
 
LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2pnanhvn
 
Chương 2: Ngôn ngữ PHP
Chương 2: Ngôn ngữ PHPChương 2: Ngôn ngữ PHP
Chương 2: Ngôn ngữ PHPHồ Lợi
 
Bài 4 Lập trình PHP (phần 2) - Giáo trình FPT
Bài 4 Lập trình PHP (phần 2) - Giáo trình FPTBài 4 Lập trình PHP (phần 2) - Giáo trình FPT
Bài 4 Lập trình PHP (phần 2) - Giáo trình FPTMasterCode.vn
 
Oop unit 11 input và output
Oop unit 11 input và outputOop unit 11 input và output
Oop unit 11 input và outputTráng Hà Viết
 

Mais procurados (20)

Hướng dẫn lập trình CMS Joomla 2.5
Hướng dẫn lập trình CMS Joomla 2.5 Hướng dẫn lập trình CMS Joomla 2.5
Hướng dẫn lập trình CMS Joomla 2.5
 
Php02 ngon nguphp
Php02 ngon nguphpPhp02 ngon nguphp
Php02 ngon nguphp
 
Lesson 2 lý thuyết
Lesson 2 lý thuyếtLesson 2 lý thuyết
Lesson 2 lý thuyết
 
Cấu trúc cơ bản
Cấu trúc cơ bảnCấu trúc cơ bản
Cấu trúc cơ bản
 
Các quy định& chuẩn trong lập trình NukeViet
Các quy định& chuẩn trong lập trình NukeVietCác quy định& chuẩn trong lập trình NukeViet
Các quy định& chuẩn trong lập trình NukeViet
 
Lesson 2 practice
Lesson 2 practiceLesson 2 practice
Lesson 2 practice
 
Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)
Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)
Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)
 
Kiem tra javascript
Kiem tra javascriptKiem tra javascript
Kiem tra javascript
 
Lập trình hướng đối tượng trong PHP
 Lập trình hướng đối tượng trong PHP Lập trình hướng đối tượng trong PHP
Lập trình hướng đối tượng trong PHP
 
Học PHP cơ bản - Mảng trong PHP ( CH002 - Bài 1.2)
Học PHP cơ bản - Mảng trong PHP ( CH002 - Bài 1.2)Học PHP cơ bản - Mảng trong PHP ( CH002 - Bài 1.2)
Học PHP cơ bản - Mảng trong PHP ( CH002 - Bài 1.2)
 
Lap trình web PHP - Các hàm xử lý số number trong PHP (CH002 Bài 3)
Lap trình web PHP - Các hàm xử lý số number trong PHP  (CH002 Bài 3)Lap trình web PHP - Các hàm xử lý số number trong PHP  (CH002 Bài 3)
Lap trình web PHP - Các hàm xử lý số number trong PHP (CH002 Bài 3)
 
Web301 slide 3
Web301   slide 3Web301   slide 3
Web301 slide 3
 
Giao trinh thiet ke web bai 4 - php
Giao trinh thiet ke web   bai 4 - phpGiao trinh thiet ke web   bai 4 - php
Giao trinh thiet ke web bai 4 - php
 
LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2
 
Chương 2: Ngôn ngữ PHP
Chương 2: Ngôn ngữ PHPChương 2: Ngôn ngữ PHP
Chương 2: Ngôn ngữ PHP
 
Bài 4 Lập trình PHP (phần 2) - Giáo trình FPT
Bài 4 Lập trình PHP (phần 2) - Giáo trình FPTBài 4 Lập trình PHP (phần 2) - Giáo trình FPT
Bài 4 Lập trình PHP (phần 2) - Giáo trình FPT
 
Oop unit 02 java cơ bản
Oop unit 02 java cơ bảnOop unit 02 java cơ bản
Oop unit 02 java cơ bản
 
Oop unit 11 input và output
Oop unit 11 input và outputOop unit 11 input và output
Oop unit 11 input và output
 
Oop unit 10 ngoại lệ
Oop unit 10 ngoại lệOop unit 10 ngoại lệ
Oop unit 10 ngoại lệ
 
Session 06
Session 06Session 06
Session 06
 

Destaque

Programming and the web for beginners
Programming and the web for beginnersProgramming and the web for beginners
Programming and the web for beginnersSon Nguyen
 
The cloud is my laboratory
The cloud is my laboratoryThe cloud is my laboratory
The cloud is my laboratoryAdam Friedman
 
You Can Build Your OpenStack and Consume it Too
You Can Build Your OpenStack and Consume it TooYou Can Build Your OpenStack and Consume it Too
You Can Build Your OpenStack and Consume it TooPLUMgrid
 
Secrets of Successful OpenSource Developers, Ignite Session @ Devoxx 2014
Secrets of Successful OpenSource Developers, Ignite Session @ Devoxx 2014Secrets of Successful OpenSource Developers, Ignite Session @ Devoxx 2014
Secrets of Successful OpenSource Developers, Ignite Session @ Devoxx 2014Dimitris Andreadis
 
Surface flingerservice(서피스 플링거 연결 ics)
Surface flingerservice(서피스 플링거 연결 ics)Surface flingerservice(서피스 플링거 연결 ics)
Surface flingerservice(서피스 플링거 연결 ics)fefe7270
 
[Easy] How to Use Toggl Time Tracker App Tutorial
[Easy] How to Use Toggl Time Tracker App Tutorial[Easy] How to Use Toggl Time Tracker App Tutorial
[Easy] How to Use Toggl Time Tracker App TutorialAna Uy
 
Surface flingerservice(그래픽 공유 버퍼 생성 및 등록)
Surface flingerservice(그래픽 공유 버퍼 생성 및 등록)Surface flingerservice(그래픽 공유 버퍼 생성 및 등록)
Surface flingerservice(그래픽 공유 버퍼 생성 및 등록)fefe7270
 
Wishtree technologies - Executive Presentation
Wishtree technologies - Executive PresentationWishtree technologies - Executive Presentation
Wishtree technologies - Executive PresentationWishtree Technologies
 
Surface flingerservice(서피스 상태 변경 jb)
Surface flingerservice(서피스 상태 변경 jb)Surface flingerservice(서피스 상태 변경 jb)
Surface flingerservice(서피스 상태 변경 jb)fefe7270
 
Surface flingerservice(서피스 플링거 연결 jb)
Surface flingerservice(서피스 플링거 연결 jb)Surface flingerservice(서피스 플링거 연결 jb)
Surface flingerservice(서피스 플링거 연결 jb)fefe7270
 
03 Service Oriented Architecture Series - Basic SOA Architecture
03 Service Oriented Architecture Series - Basic SOA Architecture03 Service Oriented Architecture Series - Basic SOA Architecture
03 Service Oriented Architecture Series - Basic SOA ArchitecturePouria Ghatrenabi
 
Нестандартные методы продвижения с ограниченным бюджетом
Нестандартные методы продвижения с ограниченным бюджетомНестандартные методы продвижения с ограниченным бюджетом
Нестандартные методы продвижения с ограниченным бюджетомNellya Dzhamanbaeva
 
[Tutorial ]How to Use IFTTT Applets
[Tutorial ]How to Use IFTTT Applets [Tutorial ]How to Use IFTTT Applets
[Tutorial ]How to Use IFTTT Applets Ana Uy
 
Service Discovery and Registration in a Microservices Architecture
Service Discovery and Registration in a Microservices ArchitectureService Discovery and Registration in a Microservices Architecture
Service Discovery and Registration in a Microservices ArchitecturePLUMgrid
 

Destaque (20)

У світі палітри
У світі палітриУ світі палітри
У світі палітри
 
Programming and the web for beginners
Programming and the web for beginnersProgramming and the web for beginners
Programming and the web for beginners
 
EcotyReport16_web
EcotyReport16_webEcotyReport16_web
EcotyReport16_web
 
The cloud is my laboratory
The cloud is my laboratoryThe cloud is my laboratory
The cloud is my laboratory
 
You Can Build Your OpenStack and Consume it Too
You Can Build Your OpenStack and Consume it TooYou Can Build Your OpenStack and Consume it Too
You Can Build Your OpenStack and Consume it Too
 
Web documentary, веб-документалистика
Web documentary, веб-документалистикаWeb documentary, веб-документалистика
Web documentary, веб-документалистика
 
Secrets of Successful OpenSource Developers, Ignite Session @ Devoxx 2014
Secrets of Successful OpenSource Developers, Ignite Session @ Devoxx 2014Secrets of Successful OpenSource Developers, Ignite Session @ Devoxx 2014
Secrets of Successful OpenSource Developers, Ignite Session @ Devoxx 2014
 
Ascensor casero 2.0
Ascensor casero 2.0Ascensor casero 2.0
Ascensor casero 2.0
 
Surface flingerservice(서피스 플링거 연결 ics)
Surface flingerservice(서피스 플링거 연결 ics)Surface flingerservice(서피스 플링거 연결 ics)
Surface flingerservice(서피스 플링거 연결 ics)
 
[Easy] How to Use Toggl Time Tracker App Tutorial
[Easy] How to Use Toggl Time Tracker App Tutorial[Easy] How to Use Toggl Time Tracker App Tutorial
[Easy] How to Use Toggl Time Tracker App Tutorial
 
WildFly & WildFly Swarm
WildFly & WildFly SwarmWildFly & WildFly Swarm
WildFly & WildFly Swarm
 
Surface flingerservice(그래픽 공유 버퍼 생성 및 등록)
Surface flingerservice(그래픽 공유 버퍼 생성 및 등록)Surface flingerservice(그래픽 공유 버퍼 생성 및 등록)
Surface flingerservice(그래픽 공유 버퍼 생성 및 등록)
 
Wishtree technologies - Executive Presentation
Wishtree technologies - Executive PresentationWishtree technologies - Executive Presentation
Wishtree technologies - Executive Presentation
 
Surface flingerservice(서피스 상태 변경 jb)
Surface flingerservice(서피스 상태 변경 jb)Surface flingerservice(서피스 상태 변경 jb)
Surface flingerservice(서피스 상태 변경 jb)
 
Surface flingerservice(서피스 플링거 연결 jb)
Surface flingerservice(서피스 플링거 연결 jb)Surface flingerservice(서피스 플링거 연결 jb)
Surface flingerservice(서피스 플링거 연결 jb)
 
Содержание и структура библиотечного сайта (презентация)
Содержание и структура библиотечного сайта (презентация)Содержание и структура библиотечного сайта (презентация)
Содержание и структура библиотечного сайта (презентация)
 
03 Service Oriented Architecture Series - Basic SOA Architecture
03 Service Oriented Architecture Series - Basic SOA Architecture03 Service Oriented Architecture Series - Basic SOA Architecture
03 Service Oriented Architecture Series - Basic SOA Architecture
 
Нестандартные методы продвижения с ограниченным бюджетом
Нестандартные методы продвижения с ограниченным бюджетомНестандартные методы продвижения с ограниченным бюджетом
Нестандартные методы продвижения с ограниченным бюджетом
 
[Tutorial ]How to Use IFTTT Applets
[Tutorial ]How to Use IFTTT Applets [Tutorial ]How to Use IFTTT Applets
[Tutorial ]How to Use IFTTT Applets
 
Service Discovery and Registration in a Microservices Architecture
Service Discovery and Registration in a Microservices ArchitectureService Discovery and Registration in a Microservices Architecture
Service Discovery and Registration in a Microservices Architecture
 

Semelhante a Hàm (function)

Tài liệu lập trình PHP từ căn bản đến nâng cao
Tài liệu lập trình PHP từ căn bản đến nâng caoTài liệu lập trình PHP từ căn bản đến nâng cao
Tài liệu lập trình PHP từ căn bản đến nâng caoZendVN
 
Phong cach lap trinh c++
Phong cach lap trinh c++Phong cach lap trinh c++
Phong cach lap trinh c++ptquang160492
 
Hàm và Chuỗi
Hàm và ChuỗiHàm và Chuỗi
Hàm và Chuỗipnanhvn
 
Lap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoLap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoHuy Nguyễn
 
Lap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoLap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoBác Luân
 
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPTBài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPTMasterCode.vn
 
lap trinh c Phan2 chuong5
 lap trinh c Phan2 chuong5 lap trinh c Phan2 chuong5
lap trinh c Phan2 chuong5thanhyu
 
Hàm và nạp chồng hàm
Hàm và nạp chồng hàmHàm và nạp chồng hàm
Hàm và nạp chồng hàmLAnhHuy4
 
Tài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.xTài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.xZendVN
 
Haiphongit.com.tai lieu-learning-php-my sql
Haiphongit.com.tai lieu-learning-php-my sqlHaiphongit.com.tai lieu-learning-php-my sql
Haiphongit.com.tai lieu-learning-php-my sqlGiang Nguyễn
 

Semelhante a Hàm (function) (20)

Chuong 04 ham
Chuong 04 hamChuong 04 ham
Chuong 04 ham
 
Tài liệu lập trình PHP từ căn bản đến nâng cao
Tài liệu lập trình PHP từ căn bản đến nâng caoTài liệu lập trình PHP từ căn bản đến nâng cao
Tài liệu lập trình PHP từ căn bản đến nâng cao
 
Phong cach lap trinh c++
Phong cach lap trinh c++Phong cach lap trinh c++
Phong cach lap trinh c++
 
Phong cach lap trinh c++
Phong cach lap trinh c++Phong cach lap trinh c++
Phong cach lap trinh c++
 
Kiem tra Javasrctip
Kiem tra JavasrctipKiem tra Javasrctip
Kiem tra Javasrctip
 
hàm_nocopy.pdf
hàm_nocopy.pdfhàm_nocopy.pdf
hàm_nocopy.pdf
 
Hàm và Chuỗi
Hàm và ChuỗiHàm và Chuỗi
Hàm và Chuỗi
 
Lap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoLap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_cao
 
Lap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoLap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_cao
 
Hàm can bản
Hàm can bảnHàm can bản
Hàm can bản
 
Chuong 01
Chuong 01Chuong 01
Chuong 01
 
Chuong 01 mo dau
Chuong 01 mo dauChuong 01 mo dau
Chuong 01 mo dau
 
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPTBài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
 
lap trinh c Phan2 chuong5
 lap trinh c Phan2 chuong5 lap trinh c Phan2 chuong5
lap trinh c Phan2 chuong5
 
Hàm và nạp chồng hàm
Hàm và nạp chồng hàmHàm và nạp chồng hàm
Hàm và nạp chồng hàm
 
Web201 slide 3
Web201   slide 3Web201   slide 3
Web201 slide 3
 
Ltc 6
Ltc 6Ltc 6
Ltc 6
 
Tài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.xTài liệu Lập trình Zend Framework 2.x
Tài liệu Lập trình Zend Framework 2.x
 
Coding standard
Coding standardCoding standard
Coding standard
 
Haiphongit.com.tai lieu-learning-php-my sql
Haiphongit.com.tai lieu-learning-php-my sqlHaiphongit.com.tai lieu-learning-php-my sql
Haiphongit.com.tai lieu-learning-php-my sql
 

Mais de Son Nguyen

Wsdl connector introduction
Wsdl connector introductionWsdl connector introduction
Wsdl connector introductionSon Nguyen
 
Android intergrate with mule
Android intergrate with muleAndroid intergrate with mule
Android intergrate with muleSon Nguyen
 
Mule flow overview
Mule flow overviewMule flow overview
Mule flow overviewSon Nguyen
 
Mule flow and filter
Mule flow and filterMule flow and filter
Mule flow and filterSon Nguyen
 
Handle exceptions in mule
Handle exceptions in muleHandle exceptions in mule
Handle exceptions in muleSon Nguyen
 
Spring security integrate with mule
Spring security integrate with muleSpring security integrate with mule
Spring security integrate with muleSon Nguyen
 
Message processor in mule
Message processor in muleMessage processor in mule
Message processor in muleSon Nguyen
 
Expression language in mule
Expression language in muleExpression language in mule
Expression language in muleSon Nguyen
 
Mule with data weave
Mule with data weaveMule with data weave
Mule with data weaveSon Nguyen
 
Using spring scheduler mule
Using spring scheduler muleUsing spring scheduler mule
Using spring scheduler muleSon Nguyen
 
Composite source in bound and out-bound
Composite source in bound and out-boundComposite source in bound and out-bound
Composite source in bound and out-boundSon Nguyen
 
Batch job processing
Batch job processingBatch job processing
Batch job processingSon Nguyen
 
Using message enricher
Using message enricherUsing message enricher
Using message enricherSon Nguyen
 
Finance connectors with mule
Finance connectors with muleFinance connectors with mule
Finance connectors with muleSon Nguyen
 
Google drive connection
Google drive connectionGoogle drive connection
Google drive connectionSon Nguyen
 
Using properties in mule
Using properties in muleUsing properties in mule
Using properties in muleSon Nguyen
 
Mule integrate with microsoft
Mule integrate with microsoftMule integrate with microsoft
Mule integrate with microsoftSon Nguyen
 
Anypoint connectors
Anypoint connectorsAnypoint connectors
Anypoint connectorsSon Nguyen
 
Mule esb basic introduction
Mule esb basic introductionMule esb basic introduction
Mule esb basic introductionSon Nguyen
 

Mais de Son Nguyen (20)

Wsdl connector introduction
Wsdl connector introductionWsdl connector introduction
Wsdl connector introduction
 
Android intergrate with mule
Android intergrate with muleAndroid intergrate with mule
Android intergrate with mule
 
Mule flow overview
Mule flow overviewMule flow overview
Mule flow overview
 
Mule flow and filter
Mule flow and filterMule flow and filter
Mule flow and filter
 
Handle exceptions in mule
Handle exceptions in muleHandle exceptions in mule
Handle exceptions in mule
 
Spring security integrate with mule
Spring security integrate with muleSpring security integrate with mule
Spring security integrate with mule
 
Message processor in mule
Message processor in muleMessage processor in mule
Message processor in mule
 
Expression language in mule
Expression language in muleExpression language in mule
Expression language in mule
 
Mule with data weave
Mule with data weaveMule with data weave
Mule with data weave
 
Using spring scheduler mule
Using spring scheduler muleUsing spring scheduler mule
Using spring scheduler mule
 
Composite source in bound and out-bound
Composite source in bound and out-boundComposite source in bound and out-bound
Composite source in bound and out-bound
 
Batch job processing
Batch job processingBatch job processing
Batch job processing
 
Using message enricher
Using message enricherUsing message enricher
Using message enricher
 
Finance connectors with mule
Finance connectors with muleFinance connectors with mule
Finance connectors with mule
 
Google drive connection
Google drive connectionGoogle drive connection
Google drive connection
 
Using properties in mule
Using properties in muleUsing properties in mule
Using properties in mule
 
Mule integrate with microsoft
Mule integrate with microsoftMule integrate with microsoft
Mule integrate with microsoft
 
Jms queue
Jms queueJms queue
Jms queue
 
Anypoint connectors
Anypoint connectorsAnypoint connectors
Anypoint connectors
 
Mule esb basic introduction
Mule esb basic introductionMule esb basic introduction
Mule esb basic introduction
 

Hàm (function)

  • 2. • Khi lập trình trong WordPress (và có thể ở các CMS khác), chúng ta sẽ sử dụng hàm rất nhiều nên ở đây mình xin nói rõ về hàm cũng như các quy tắc bạn cần biết khi sử dụng hàm. Trước hết, mình xin nói rõ rằng khi khai báo hàm, bạn có thể khai báo nó vào tập tin functions.php trong theme rồi có thể gọi nó trong một template bất kỳ như index.php chẳng hạn.
  • 3. Hàm trong PHP là gì? • Hàm nghĩa là một tập hợp các đoạn mã và nó sẽ thực thi các đoạn mã đó khi gọi hàm ra, nó sẽ được thực thi lại nhiều lần hoặc thực thi trong một trường hợp nhất định. Có nghĩa là khi bạn tạo hàm thì các đoạn mã bên trong đó sẽ không thực thi cho đến khi được gọi ra bên ngoài. • Ví dụ, trong WordPress có rất nhiều hàm có sẵn để bạn làm các việc gì đó mà không cần phải viết code nhiều. Hoặc trong PHP cũng có nhiều hàm được định nghĩa sẵn để làm một số việc, và bạn cũng có thể tự tạo hàm riêng cho mình.
  • 4. Phân biệt hàm • Khi nhìn vào một đoạn mã, nếu bạn thấy một từ khoá mà có cặp dấu ngoặc đằng sau thì chính là hàm. Ví dụ:get_the_title(), the_permalink(),…đều là hàm. Và đôi khi trong hàm cũng có tham số như wp_nav_menu( $args ), get_posts( $args ). Tham số bên trong thường là người dùng có thể đặt tên biến bất kỳ, hoặc viết bằng giá trị như dynamic_sidebar('sidebar').
  • 5. Cách tạo một hàm • Để tạo một hàm, chúng ta khai báo bằng từ khoá function tên_hàm() như sau: • function tinh_tong() • { • // Code của hàm viết trong này • } • Trong đó, các đoạn mã của hàm phải được đặt trong cặp dấu ngoặc nhọn ({}) của nó. • Và sau đó, chúng ta có thể gọi hàm ra bằng cách viết tên hàm. Ví dụ: tinh_tong().
  • 6. • <?php • function tinh_tong() • { • $x = 5; • $y = 10; • $total = $x + $y; • echo $total; • } • • tinh_tong(); // Gọi hàm • ?>
  • 7. Return và Echo trong hàm • Khi làm việc với hàm, có thể bạn sẽ thấy rất nhiều từ khoá return trong hàm. Bạn học PHP từ đầu tới giờ cũng biết từ khoá echo là để hiển thị một cái gì đó. Nhưng khi sử dụng hàm, bạn cần biết thêm một từ khoáreturn. Cũng giống như echo, bạn có thể return các kiểu giá trị hoặc bất cứ cái gì. Và return chỉ được sử dụng trong hàm.
  • 8. • <?php • function get_site_name() • { • $site_name = get_bloginfo( 'name' ); • return $site_name; • } • get_site_name(); // Không hiển thị gì cả • var_dump( get_site_name() ); // Dump • echo '<br/>'; • echo get_site_name(); // Phải echo ra mới hiển thị được giá trị được return • ?>
  • 9. • Để giải thích từ khoá return cho trọn vẹn cũng khó. Nhưng bạn có thể hiểu, return nghĩa là bạn trả giá trị của hàm ra bên ngoài nhưng sẽ không hiển thị ra, giống như giá trị của hàm đó đã được chuẩn bị sẵn để sử dụng vậy. Khi return ra, bạn chỉ có thể thấy nó thông qua việc echo hoặc var_dump nó. Và bạn cũng có thể sử dụng giá trị được return để sử dụng với các toán tử hoặc các điều kiện rẽ nhánh. • Như vậy, bạn có thể tạm hiểu là nếu bạn echo giá trị trong hàm thì giá trị sẽ được xuất ra màn hình. Còn nếu retun giá trị trong hàm thì nó chỉ gửi dữ liệu về, bạn muốn xuất ra phải sử dụng return. • Lưu ý là trong một hàm, bạn chỉ có thể return 1 lần duy nhất.
  • 10. Hàm có tham số • Một trong những tính năng hữu dụng nhất của hàm là bạn có thể truyền tham số vào trong giá trị của hàm. Ví dụ như bạn tạo một hàm tính tổng, cho phép tính tổng của hai số mà người dùng nhập vào thì bạn sẽ cần sử dụng tham số, sau đó truyền giá trị của tham số vào bên trong hàm để nó xử lý rồi trả về kết quả. • Để khai báo tham số trong hàm, bạn sẽ viết thêm các biến vào phần tên hàm như sau:
  • 11. • <?php • function tinh_tong( $x, $y ) • { • $total = $x + $y; • return $total; • } • • // Gọi hàm ra kèm giá trị tham số • echo tinh_tong( 5,15 ); • ?>
  • 12. • Điều này có nghĩa là, bạn mặc định hàm tinh_tong() có hai tham số là $x và $y theo thứ tự giá trị đứng trước là x, đứng sau là y. Sau đó trong nội dung của hàm, chúng ta có hàm $total là tổng của $x và $. Cuối cùng là trả về biến $total để in kết quả. • Như bạn thấy hàm đó chúng ta không gán giá trị cho $x và $y mà việc gán giá trị sẽ được làm khi gọi hàm ra. Khi gọi ra, chúng ta viết hai tham số vào hàm và hai giá trị tham số này sẽ có thứ tự giống như bạn đã thiết lập khi tạo hàm, tức là giá trị đứng trước là $x, đứng sau là $y. Và trong ví dụ, tinh_tong(5,15) nghĩa là ta khai báo $x = 5, $y = 15 vào trong hàm để nó thực thi. • Nói qua một xíu về WordPress, như bạn thấy từ các bài trước cho đến bài này mình sử dụng hàmget_bloginfo() rất nhiều để lấy ra thông tin của website. Và đôi khi bạn thấy mình có viết tham số vào hàm này như get_bloginfo('name'), get_bloginfo('url'). Và các tham số đó chính là tham số dạng chuỗi trong hàm get_bloginfo(). Nếu bạn xem code tạo hàm này trong tập tin /wp-includes/general-template.php sẽ thấy nó cũng khai báo hai tham số vào hàm này để người dùng truyền vào khi sử dụng. • Tips: Khi đọc tra cứu code tạo codex.wordpress.org, hãy kéo xuống cuối trang để biết code đó được tạo ra ở tập tin nào trong mã nguồn.
  • 13. Phạm vi biến của hàm • Khi sử dụng hàm, đôi khi chúng ta cần đưa một biến nào đó mà bạn đã khai báo trong code vào trong hàm để sử dụng lại. Ví dụ • <?php • function phien_ban() • { • return $wp_version; • } • echo phien_ban(); • ?>
  • 14. • Ở đoạn trên, mình đưa biến $wp_version vào hàm phien_ban(). Do mình đang viết code trong theme WordPress nên mình muốn sử dụng các biến có sẵn của WordPress, cụ thể biến $wp_version để in phiên bản của mã nguồn WordPress trên website. • Thế nhưng nếu bạn xem kết quả, bạn sẽ thấy lỗi là “Notice: Undefined variable: wp_version in /xxx/wp-content/themes/hoc-php/index.php on line 4“. Nghĩa là nó báo lỗi có một biến không xác định tên wp_version ở dòng số 4 trong cái tập tin kia. Nhưng đây là biến có sẵn của WordPress mà, tại sao lại không xác định? • Ở đây, bạn phải hiểu rằng biến $wp_version chỉ được khai báo ở một tập tin nào đó trong mã nguồn và bạn chỉ có thể sử dụng nó bên ngoài một hàm. Khi đưa biến vào hàm, PHP tự hiểu rằng cái biến đó là một biến riêng của hàm được khai báo. • Vậy làm sao có thể sử dụng biến có sẵn như $wp_version trong hàm của chúng ta? Đó là chúng ta sẽ cần khai báo thêm từ khoá global vào tên biến cần sử dụng lại trong hàm như sau:
  • 15. Lời kết • Đây là một trong các bài quan trọng nhất trong PHP nói chung và lập trình WordPress nói riêng vì hàm có rất bổ ích sau này khi bạn viết code, nó sẽ giúp bạn xử lý các tác vụ trong code tốt hơn cũng như có thể viết một hàm để làm một công việc mang tính chất lặp đi lặp lại. Nên mình mong bài này có thể đã giúp bạn hiểu qua rất rõ về khái niệm hàm trong PHP.