Chủ Nhật, 10 tháng 3, 2013

HÀM TRONG PHP


HÀM TRONG PHP

HÀM XỬ LÝ CHUỖI
1.     Hàm strlen: Đếm số ký tự của chuỗi
strlen:
<? $str = 'abcdef';
   echo strlen($str);
?> <br />
1.     Hàm strpos, stripos: Tìm chuỗi con trong chuỗi mẹ
strpos:
<? $me="abcDabcd";
   $con="d";
   echo strpos($me, $con);
?> <br />
2.     Hàm str_replace, str_ireplace: Thay thế chuỗi con bằng một chuỗi khác
str_replace:
<? $str="ab_AB_ab";
   echo str_replace("ab","xy",$str);
?> <br />
3.     Hàm number_format : Định dạng số
number_format 1234.5678 :
<? $n = 1234.5678;
echo "en = ", number_format($n, 2, '.'',' );
echo "vi = ", number_format($n, 2 , ',' , '.' );
?> <br/>
4.     Hàm strip_tags: Cắt bỏ cc tag html
strip_tags: <? echo strip_tags("<b><i>PHP</i></b>"); ?> <br />
5.     Hàm strstr: Trích chuỗi con
strstr: <? echo strstr("teo@yahoo.com","@");?> <br />
6.     Hàm substr: Trích chuỗi con
substr: <? echo substr("teo@yahoo.com",4,50);?> <br />
7.     Hàm mb_convert_case: Đổi chữ hoa<->thường MB_CASE_LOWER, MB_CASE_UPPER, MB_CASE_TITLE
mb_convert_case:
<? echo mb_convert_case("lập trình ứng dỤng",MB_CASE_TITLE,'utf-8'); ?> <br />
8.     Hàm md5: Mã hóa 1 chuỗi
md5: <? echo md5("123");?> <br />
9.     Hàm sha1: Mã hóa 1 chuỗi
sha1: <? echo sha1("123");?> <br />

HÀM THỜI GIAN
10. Hàm time: Cho giờ hiện hành
time: <? echo time() ?> <br />
11. Hàm checkdate: Kiểm tra ngày hợp lệ hay không
checkdate:
<? echo (checkdate(13,17,2010)==true)? "Ngày hợp lệ":"Ngày không hợp lệ";?>
12. Hàm date: Định dạng ngày
date:<br />
Now:  <? echo date("d/m/Y H:i:s");?> <br />
Thứ trong tuần: <? echo date("w");?> <br />
Tên thứ trong tuần: <? echo date("D") ;?> <br />
Tên thứ trong tuần: <? echo date("l");?> <br />
Tên tháng: <? echo date("M") ;?> <br />
Tên tháng:<? echo date("F");?> <br />
Ngày trong năm: <? echo date("z");?> <br />
13. Hàm strtotime: Đổi chuỗi thành dạng timestamp
strtotime:<br />
Now: <? echo strtotime("now");?> <br />
+1 day: <? echo date("d/m/Y H:i:s", strtotime("+1 day"));?> <br />
+1 week: <? echo date("d/m/Y H:i:s", strtotime("+1 week") );?> <br />
+1 week 2 days 4 hours 2 seconds: <? echo date("d/m/Y H:i:s",strtotime("+1 week 2 days 4 hours 2 seconds")) ?> <br>
next Thursday: <? echo date("d/m/Y", strtotime("next Thursday") )?> <br />
last Monday: <? echo date("d/m/Y", strtotime("last Monday") )?> <br />
10 September 2000: <? echo date("d/m/Y",strtotime("10 September 2000") )?> <br/>

HÀM XỬ LÝ FILE
14. Hàm basename: Lấy tên file
basename:
<? $file = "/php01/hamPHP.php";
   echo basename($file);
?> <br />
15. Hàm filesize: Lấy kích thước file
filesize:
<? $f = "php02.sql";
   echo filesize($f).' bytes';
?> <br />
16. Hàm file_exists: Kiểm tra 1 file có tồn tại hay không
file_exists:
<?  $f = "php02.sql";
    if ( file_exists($f) == true) echo "Có file"; else echo "Không có file";
?> <br/>
17. Hàm fopen, fclose, fread: Mở, đóng, đọc nội dung file text
fopen, fclose, fread:
<? $file = "readme.txt";
   $f = fopen($file,"r+");
   $str = fread($f, filesize($file) );
   fclose($f);echo $str;
?> <br />
18. Hàm unlink: Xóa file
unlink: <? unlink("readme2.txt");?> <br />
19. Hàm mkdir: Tạo folder
mkdir: <? mkdir("hinh/dulich",0777,true);?> <br />
20. Hàm copy: Sao chép file
copy: <? copy("php02.sql", "php02bis.sql") ;?> <br />
21. Hàm rename: Đổi tên file
rename: <? rename("php02bis.sql","abc.sql");?> <br />
22. Hàm file_get_contents: Đọc toàn bộ nội dung 1 file text
file_get_contents:
<? $str = file_get_contents("readme.txt");
   echo $str;
?> <br />

CÁC HÀM KHÁC
23. Hàm isset: Kiểm tra sự tồn tại của 1 biến
isset:
<?php $x=1;
if (isset($x)==true) echo "Có biền x"; else echo "Không có biến x ";
if (isset($y)==true) echo "Có biền y"; else echo "Không có biến y ";
?>
24. Hàm unset: Hủy bỏ 1 biến
unset:
<?php $x=1; $y=2;
unset($x);
if (isset($x)==true) echo "Có biền x"; else echo "Không có biến x ";
if (isset($y)==true) echo "Có biền y"; else echo "Không có biến y ";
?>

Class Singleton

Singleton là một class điều hành lớp qua phương thức static.Nó chỉ cho phép ta tạo một đối tượng duy nhất.

Ý nghĩa các hàm addslashes, mysql_real_escape_string, htmlspecialchars

- Một là: dữ liệu đó có chứa các kí tự đặc biệt (ví dụ như dấu ‘ , ” , /, …) làm cho câu query của chúng ta bị lỗi cú pháp.

Do đó trong trường hợp này, ta cần phải có hàm để xử lý các biến trước khi đưa vào câu query. Và ứng cử viên sáng giá hiện giờ là: addslashes, mysql_real_escape_string
+ Phân biệt addslashes, mysql_real_escape_string:* Thông thường các hệ quản trị cơ sở dữ liệu(HQTCSDL) đều có hàm xử lý kí tự đặc biệt, nên php chỉ cần chuyển qua cho HQTCSDL
Đối với Mysql thì khi ta gọi hàm mysql_real_escape_string thì php sẽ chuyển xuống cho mysql xử lý (do đó trước khi dùng hàm này, phải gọi hàm mysql_connect)
Đối với PostgreSql thì khi ta gọi hàm pg_escape_string thì php sẽ chuyển xuống cho PostgreSql xử lý
* Đối với các HQTCSDL không có hàm xử lý các kí tự đặc biệt thì ta sẽ dùng chính php để xử lý, thông qua hàm addslashes
- Hai là: dữ liệu đó không làm ảnh hưởng đến cú pháp của câu query, được thêm vào bình thường, nhưng khi hiển thị lên, nó làm cho tài liều html của chúng ta bị lỗi cú pháp.

Cắt chuỗi trong PHP với hàm substr()


Cắt chuỗi trong PHP với hàm substr()



Cũng như các ngôn ngữ lập trình khác, PHP hỗ trợ hàm substr() để cắt chuỗi con với chiều dài l bắt đầu từ vị trí thứ i từ chuỗi str được cung cấp.
Cú pháp.

String substr(string str, int i [, int l])

Trong đó: – int l: Tham số tùy chọn. Điều này có nghĩa là nếu bạn không cung cấp chiều dài của chuỗi cần lấy ra, hàm này sẽ trả về chuỗi con từ vị trí thứ i đến hết chuỗi như ví dụ sau:

<?php
$str=”Ho Tro Lap Trinh”;
echo $str.”<br/>”; // Hiển thị chuỗi gốc.
echo substr($str,1).”<br/>”; // Cắt chuối con từ vị trí 1 đến hết chuỗi
echo substr($str,-6).”<br/>”; //Cắt từ vị trí số 6 đếm từ cuối chuỗi đến hết chuỗi
echo substr($str,1,9).”<br/>”; // Cắt từ vị trí số 1 đến vị trí số 9
echo substr($str,2,-10).”<br/>”; //Cắt từ vị trí số 2 đến vị trí số 10 từ cuối chuỗi.
?>

Hàm __construct trong PHP5

Hàm __construct()

là hàm tự động  tự động chạy khi bạn khởi tạo khởi tạo object = new class?

cứ hiểu __construct trong PHP5 là để không phải viết lại 1 method cùng tên với class giống như trong PHP4 mà thôi, nhiệm vụ của nó là SET var. Cùng với __construct() là hàm __destruct() làm nhiệm vụ UNSET var. Hai methods này cùng với một số methods khác như __call(), __get(), __set(), __isset(), __unset()... trong PHP5 gọi là Magic Methods.

Thứ Ba, 5 tháng 3, 2013

Sự khác nhau giữa thuộc tính Public, Protected, Private

Public:  các thuộc tính hoặc các phương thức có thể truy xuất ra bên ngoài class

Protected: các thuộc tính các phương thức  không thể truy xuất ra bên ngoài class, nó chỉ được gọi trong class và class kế thừa

Private: các thuộc tính các phương thức không thể truy xuất ra bên ngoài class, nó chỉ được gọi trong phạm vi class

-----------------
Chế độ truy xuất công cộng (public): Các thành viên nếu được thiết lập ở chế độ này sẽ được nhìn thấy và truy xuất ở mọi nơi trong chương trình.

- Chế độ truy xuất riêng tư (private): Các thành viên nếu được thiết lập ở chế độ này sẽ chỉ được nhìn thấy và truy xuất được ở bản thân lớp định nghĩa thành viên đó.

- Chế độ bảo vệ (protected): Chế độ này sẽ được dùng để giới hạn truy cập tới các lớp được thừa kế và bản thân lớp định nghĩa thành viên đó.

Thay đổi port wamserver khi cài đồng thời WAMP Server và IIS


ví dụ như 8080 chẳng hạn cho WAMP Server để có thể chạy WAMP Server theo địa chỉ http://localhost:8080 và IIS 7 vẫn chạy ở địa chỉhttp://localhost như bình thường.
Để thực hiện được điều này, chúng ta cần thực hiện một số bước như sau:
  • Nhấn lên biểu tượng của WAMP Server trên thanh tác vụ và chọn Apache > httpd.conf để mở file cấu hình đó ra.
  • Đổi ‘Listen 80’ thành ‘Listen 8080’.
  • Lưu và khởi động lại WAMP Server.
Khi WAMP Server đã khởi động lại thành công, chúng ta có thể truy cập WAMP Server theo địa chỉ http://localhost:8080, còn ở địa chỉ http://localhost IIS 7 vẫn chạy bình thường sử dụng cổng mặc định (80).

Mô hình 3 tầng (3-tiers) là gì?


1. Mô hình 3 tầng (3-tiers) là gì?
Theo wikipedia:
TRÍCH DẪN:“3-tiers là một kiến trúc kiểu client/server mà trong đó giao diện người dùng (UI-user interface), các quy tắc xử lý (BR-business rule hay BL-business logic), và việc lưu trữ dữ liệu được phát triển như những module độc lập, và hầu hết là được duy trì trên các nền tảng độc lập, và mô hình 3 tầng (3-tiers) được coi là một kiến trúc phần mềm và là một mẫu thiết kế.” (dịch lại từ wikipedia tiếng Anh).
3-Tiers có tính vật lý (physical): là mô hình client-server (mỗi tier có thể đặt chung 1 nơi hoặc nhiều nơi, kết nối với nhau qua Web services, WCF, Remoting…). Như hình vẽ ta thấy 3 tầng rõ rệt 3 tầng:
+ Presentation tier bao gồm các thành phần phần xử lý giao diện Graphic User Interface (GUI)
+ Business tier gồm các thành phần Business Logic Layer (BLL), Data Access Layer (DAL) và Data Tranfer Object (DTO): xem thêm phần 3-layers
+ Data tier lưu trữ dữ liệu, là các hệ quản trị CSDL như MS SQL Server, Oracle, SQLite, MS Access, XML files, text files,…
Tuy nhiên bạn cần chú ý những ưu và nhược điểm sau đây để áp dụng nó một cách đúng đắn.
Ưu điểm:
- Dễ dàng mở rộng, thay đổi quy mô của hệ thống: Khi cần tải lớn, người quản trị có thể dễ dàng thêm các máy chủ vào nhóm, hoặc lấy bớt ra trong trường hợp ngược lại.
Nhược điểm:
- Việc truyền dữ liệu giữa các tầng sẽ chậm hơn vì phải truyền giữa các tiến trình khác nhau (IPC), dữ liệu cần phải được đóng gói -> truyền đi -> mở gói trước khi có thể dùng được.
- Việc phát triển ứng dụng phức tạp hơn.
2. Mô hình 3 lớp (3-layers) là gì?
Không như 3-Tiers có tính vật lý, 3-Layers có tính logic (mỗi layer có 1 công việc) và là 1 thành phần của 3-Tiers. Gồm 3 lớp chính:
+ Graphic User Interface (GUI): Thành phần giao diện, là các form của chương trình tương tác với người sử dụng.
+ Business Logic Layer (BLL): Xử lý các nghiệp vụ của chương trình như tính toán, xử lý hợp lệ và toàn vẹn về mặt dữ liệu.
+ Data Access Layer (DAL): Tầng giao tiếp với các hệ quản trị CSDL
Trong 1 số trường hợp vì lượng thông tin gởi nhiều ta có thể dùng Data Tranfer Object (DTO) để chuyển đối tượng hoặc danh sách đối tượng giữa các tầng với nhau cho tiện dụng.

Thứ Hai, 4 tháng 3, 2013

sự khác nhau về mô hình 3 tiers và 3 layer


Hỏi đáp về mô hình 3 tầng

1. Mô hình 3 tầng (3-tiers) là gì?
Theo wikipedia thì:
“3-tiers là một kiến trúc kiểu client/server mà trong đó giao diện người dùng (UI-user interface), các quy tắc xử lý(BR-business rule hay BL-business logic), và việc lưu trữ dữ liệu được phát triển như những module độc lập, và hầu hết là được duy trì trên các nền tảng độc lập, và mô hình 3 tầng (3-tiers) được coi là một kiến trúc phần mềm và là một mẫu thiết kế.” (dịch lại từ wikipedia tiếng Anh).
Như vậy, ta có thể mô hình này phân tách ứng dụng ra làm 3 module riêng biệt, bao gồm:
- Tầng Presentation: được dùng để giao tiếp với người dùng, nhiệm vụ chính là hiển thị dữ liệu và nhận dữ liệu từ người dùng.
- Tầng Business Logic: nhiệm vụ chính là cung cấp các chức năng của phần mềm.
- Tầng Data: lưu trữ dữ liệu, cho phép lớp Business Logic có thể tìm kiếm, trích xuất, cập nhật… dữ liệu.
2. Tại sao là 3-tiers mà không phải là 3-layers?
Khi dùng từ layer, chúng ta nói tới việc phân chia ứng dụng thành các thành phần một cách logic theo chức năng hoặc theo vai trò, điều này giúp phần mềm của bạn có cấu trúc sáng sủa, dễ dùng lại, từ đó giúp việc phát triển và bảo trì dễ dàng hơn. Các layer khác nhau khi được thực thi vẫn có thể nằm trong cùng một vùng bộ nhớ của một process, và hiển nhiên việc giao tiếp giữa 2 layer có thể không phải là giao tiếp giữa 2 process, đồng nghĩa với việc chúng không liên quan tới mô hình client/server.
Trái lại, tier liên quan đến cách phân chia một cách vật lý các thành phần trên các máy tính khác nhau.
Điều làm nhiều người nhầm lẫn giữa layer và tier là chúng có cùng cách phân chia (presentation, business, data), tuy nhiên trên thực tế chúng khác nhau. Vì cách phân chia như trên nên 1 tier có thể chứa nhiều hơn 1 layer.
3. 3-tiers có những ưu và nhược điểm gì?
3-tiers là một kiến trúc phần mềm, có nghĩa là bạn có thể dùng nó để xây dựng nên bộ khung tổng thể của ứng dụng. Tuy nhiên bạn cần chú ý những ưu và nhược điểm sau đây để áp dụng nó một cách đúng đắn.
Ưu điểm:
- Dễ dàng mở rộng, thay đổi quy mô của hệ thống: Khi cần tải lớn, người quản trị có thể dễ dàng thêm các máy chủ vào nhóm, hoặc lấy bớt ra trong trường hợp ngược lại.
Nhược điểm:
- Việc truyền dữ liệu giữa các tầng sẽ chậm hơn vì phải truyền giữa các tiến trình khác nhau (IPC), dữ liệu cần phải được đóng gói -> truyền đi -> mở gói trước khi có thể dùng được.
- Việc phát triển ứng dụng phức tạp hơn.
4. Những công nghệ nào hỗ trợ xây dựng các ứng dụng 3-tiers?
Tùy thuộc vào nền tảng, bạn có thể chọn một trong các công nghệ như EJB (J2EE), COM+ (Windows), hay cũng có thể dùng các máy chủ web như nền tảng xây dựng lớp giữa (dùng webservice). Tuy nhiên, EJB và COM+ là hai tùy chọn tốt nhất vì nó có nhiều công nghệ hỗ trợ như Object Pooling, Authentication và Authority, Resource management, Remote Object Access, Transaction…
Các công nghệ truyền thông điệp như JMS hay MSMQ cũng hỗ trợ nhiều trong việc tạo các lời gọi không đồng bộ.
5. Các ứng dụng máy chủ cơ sở dữ liệu có liên quan gì đến mô hình này không?
Có, nó đóng vai trò tầng Data.
Bản thân khi hoạt động, máy chủ CSDL trở thành 1 phần không thể thiếu trong hệ thống, nó chính là nơi chứa dữ liệu của bạn. Việc dùng một hệ CSDL sẵn có là việc nên làm vì nó giúp chúng ta rất nhiều công sức, nhưng điều đó không có nghĩa là nó không thuộc vào hệ thống của chúng ta, chỉ khác ở chỗ đây là một tầng Data được xây dựng sẵn.
6. Lớp Data Access Layer (DAL) thuộc tầng nào?
Lớp Business Logic.
Trái với nhiều người nghĩ, cứ cái gì có chữ Data thì nó phải thuộc lớp 3, tuy nhiên vì DAL chỉ đóng vai trò truy vấn, chứ bản thân nó không cung cấp dữ liệu, và nó vẫn phải được thực thi bởi các Business Object, vậy nên trong đa số trường hợp nó sẽ nằm trong lớp 2 (một số thiết kế tách nó riêng thành 1 tier).
Nên nhớ rằng việc tách riêng ra một DAL giúp bạn có một thiết kế tốt hơn, nhưng không phải là bắt buộc. Và việc tự tạo một DAL với việc dùng chung một tập các lớp truy xuất dữ liệu được cung cấp bởi một công nghệ/công cụ có sẵn như LINQ to SQL, NHibernate hay Entity Framework không có gì khác nhau về kiến trúc hệ thống.
Có lẽ vì sự tồn tại của DAL mà rất nhiều người hiểu nhầm giữa 3-tiers và 3-layers.
7. Tôi nên kiểm tra dữ liệu nhập bởi người dùng ở lớp nào?
Kiểm tra dữ liệu ở lớp giao diện giúp giảm tải cho lớp giữa, phản hồi cũng nhanh hơn. Tuy nhiên sẽ khó có thể đảm bảo sẽ không có kẽ hở để những dữ liệu không hợp lệ được chuyển đến lớp Business Logic và thậm chí lớp Data, vậy nên thông thường việckiểm tra nên được đặt trong tất cả các lớp tùy thuộc vào từng loại dữ liệu và phép kiểm tra. 
8. Tôi có một ứng dụng, nó không có giao diện người dùng vì nó chỉ nhận dữ liệu từ các ứng dụng khác, tôi có thể viết theo mô hình 3-tiers được không?
Có, từ Presentation ở đây không mang ý nghĩa giao diện tương tác với người dùng, mà nó có nghĩa rộng hơn là phần tương tác với các hệ thống bên ngoài, ví dụ Presentation có thể là phầnkết nối để truy xuất dữ liệu đến một hệ thống khác, hay một cổng để tiếp nhận các lệnh do một hệ thống khác chuyển đến.
9. Tôi nên đọc thêm tài liệu nào để hiểu kỹ hơn về mô hình 3 lớp và cách dùng hiệu quả các công nghệ như EJB và COM+?
Bạn có thể đọc thêm 2 quyển:
Designing Enterprise Applications with the J2EE Platform, Second Edition, dành cho người làm J2EE (http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/).
- Application Architecture Guide 2.0, quyển này của các bác MS (http://www.codeplex.com/AppArchGuide/)
Ngay cả khi chưa viết ứng dụng mới mô hình 3-tiers thì bạn cũng RẤT RẤT RẤT nên đọc 2 quyển trên.
10. 3-tiers có giống MVC không?
Không, trong 3-tiers, quá trình đi theo chiều dọc, bắt đầu từ Presentation, sang BL, rồi tới Data, và từ Data, chạy ngược lại BL rồi quay ra lại Presentation.
Còn trong MVC, dữ liệu được nhận bởi View, View sẽ chuyển cho Controller cập nhật vào Model, rồi sau đó dữ liệu trong Model sẽ được đưa lại cho View mà không thông qua Controller, do vậy luồng xử lý này có hình tam giác.
nguồn: http://namdh.wordpress.com/2009/12/31/3-tiers-faq/

Interface vs Abstract class


- Abstract class: là một class cha cho tất cả các class có cùng bản chất. Bản chất ở đây được hiểu là kiểu, loại, nhiệm vụ của class. Hai class cùng hiện thực một interface có thể hoàn toàn khác nhau về bản chất.
-   Interface: là một chức năng mà bạn có thể thêm và bất kì class nào. Từ chức năng ở đây không đồng nghĩa với phương thức (hoặc hàm). Interface có thể bao gồm nhiều hàm/phương thức và tất cả chúng cùng phục vụ cho một chức năng.

$_REQUEST

$_REQUEST
Trong PHP thì $_REQUEST là biến có chứa cả các giá trị của POST và GET, ngoài ra còn chứa các thông tin của $_COOKIE

Sự khác nhau giữa phưong thức POST và GET

 Giống nhau: Đều gửi dữ liệu tới server để xử lý, sau khi người dùng nhập thông tin vào Form
Khac nhau: pt POST việc gửi dữ liệu bảo mật hơn GET, gửi dữ liệu ngầm và dữ liệu không xuất hiện url , 

Còn GET:  Dữ liệu được gửi tường minh và dữ liệu xuất hiện trên URL, đây là lý do khiến nó không bảo mật so với POST, Nó còn bị giới hạn số ký tự bởi URL của web browsers.

GET thực thi nhanh hơn POST vì nhứng dữ liệu gủi đi luôn được Webbrowser cached lại

Khi dùng phương thức POST thì server luôn thực thi và trả về kết quả cho client, còn phương thức GET ứng với cùng 1 yêu cầu đó webbrowser sẽ xem trong cached có kết quả tương ứng với yêu cầu đó ko và trả về ngay không cần phải thực thi các yêu cầu đó ở phía server

Đối với những dữ liệu luôn được thay đổi thì chúng ta nên sử dụng phương thức POST, còn dữ liệu ít thay đổi chúng ta dùng phương thức GET để truy xuất và xử lý nhanh hơn.

Chủ Nhật, 3 tháng 3, 2013

Tại sao không nên dùng Table trong thiết kế website ?


Sau đây là những lý do thiết kế web nên từ bỏ việc sử dụng table và chuyển sang dùng CSS:

   + Table làm gia tăng kích thước của site dẫn đến việc tiêu tốn băng thông không cần thiết.
   + Tiêu tốn thời gian hiệu chỉnh hơn so với việc dùng CSS nếu website có thay đổi.
   + Những người khiếm thị hoặc những người truy cập website bằng DTDD hay PDA sẽ không được hiển thị đúng.
Cuối cùng, tiêu chuẩn web theo W3C hiện tại là sử dụng CSS và tin tốt lành là tất cả các trình duyệt đều hỗ trợ chuẩn này.

Tại sao CSS tốt hơn?

Thiết kế web thiết kế layout với CSS có một số thuận lợi đối với việc SEO Web, điển hình là việc có thể đặt nội dung trước các mã lệnh khác bằng thẻ DIV ( luôn nhớ rằng việc bố trí những  nội dung quan trọng bao gồm từ khóa lên phần đầu của trang web luôn làm gia tăng sự nổi bật của từ khóa ).
Thiết kế web CSS giúp giảm bớt kích thước của trang web và khách tham quan (visitor) không cần phải tải về những dữ liệu mang tính chất trình bày khi xem mỗi trang vì chúng đã được lưu trong bộ nhớ tạm (cache) của trình duyệt.

Những thuận lợi khi dùng CSS

    + Đồng bộ định dạng và dùng chung cho tất cả các trang.
    + Vẫn có thể dùng CSS ngoài mục đích SEO Web.
    + Website sẽ được tổ chức chặt chẽ và dễ bảo trì.
Tóm lại, việc thiết kế web dùng thẻ DIV nói riêng hay CSS nói chung thay thế cho các table lồng nhau sẽ làm giảm đáng kể kích thước trang, tổ chức website được chặt chẽ hơn, dễ bảo trì hơn và gia tăng tính khả dụng.
Một điểm không thuận lợi khi sử dụng CSS là chúng ta phải học về nó, tuy nhiên, điều này không quá khó cho các webmaster.
Cả hai phương pháp, table lồng nhau và CSS đều được quan tâm khi nói về SEO Web. Nhưng chúng ta đã biết, các robot sẽ quét qua toàn bộ mã trong các trang web mà chúng viếng thăm, tuy nhiên, nếu  số lượng mã quá lớn, các robot có thể không tiếp cận trọn vẹn, từ đó, việc bố trí nội dung sao cho các robot có thể tiếp cận là một điều khá quan trọng và điều này chắc chắn việc dùng CSS sẽ làm tốt hơn.
Bây giờ chúng ta sẽ xem qua vài bước thực tế về việc sử dụng thẻ DIV so với table để nâng cao sức hấp dẫn cho các công cụ tìm kiếm ( SEO Web ).

Tối ưu hóa trang web dựa trên table

Khi một trang web được tạo ra khi dùng table, thông thườngng phần nội dung chính sẽ nằm ở ô dưới cùng bên phải của table. Các robot quét 1 trang web theo chiều từ trái sang phải và từ trên xuống dưới sẽ đi qua rất nhiều đoạn mã trước khi tiếp cận được nội dung này. Để tránh điều này, chúng ta phải bố trí nội dung vào những ô đầu tiên nằm ở phần trên của table và cách tốt nhất là đưa nội dung lên trên mã HTML bằng cách dịch chuyển phần menu từ trái sang phải (menu thường được bố trí bên trái).
- See more at: http://lmt.com.vn/home/php/tim-hieu-php/item/717-tai-sao-khong-nen-dung-table-trong-thiet-ke-website.html#sthash.iNXwyeL4.dpuf

Tìm hiểu mô hình MVC là gì ?


Tìm hiểu mô hình MVC là gì ?
Mô hình MVC (Model - View - Controller) là một kiến trúc phần mềm hay mô hình thiết kế được sử dụng trong kỹ thuật phần mềm. Nó giúp cho các developer tách ứng dụng của họ ra 3 thành phần khác nhau Model, View và Controller. Mỗi thành phần có một nhiệm vụ riêng biệt và độc lập với các thành phần khác.

 MVC là gì ?

Mô hình MVC (Model - View - Controller) là một kiến trúc phần mềm hay mô hình thiết kế được sử dụng trong kỹ thuật phần mềm. Nó giúp cho các developer tách ứng dụng của họ ra 3 thành phần khác nhau Model, View và Controller. Mỗi thành phần có một nhiệm vụ riêng biệt và độc lập với các thành phần khác.

Các thành phần trong MVC

Chúng ta khoan hãy tìm hiểu đến cách thức nó hoạt động mà hãy xem nó gồm những gì! Đây là mô hình MVC
 

Model

Đây là thành phần chứa tất cả các nghiệp vụ logic, phương thức xử lý, truy xuất database, đối tượng mô tả dữ liệu như các Class, hàm xử lý...

View

Đảm nhận việc hiển thị thông tin, tương tác với người dùng, nơi chứa tất cả các đối tượng GUI như textbox, images...Hiểu một cách đơn giản, nó là tập hợp các form hoặc các file HTML.

Controller

Giữ nhiệm vụ nhận điều hướng các yêu cầu từ người dùng và gọi đúng những phương thức xử lý chúng... Chẳng hạn thành phần này sẽ nhận request từ url và form để thao tác trực tiếp với Model.

MVC làm việc như thế nào?

Nhìn lại sơ đồ phía trên, ta thấy có mũi tên nét liền và những mũi tên nét đứt. Những mũi tên nét đứt được hình thành trên quan điểm của người dùng mà không phải là của những nhà thiết kế phần mềm thực sự. Do đó chúng ta chỉ quan tâm đến những mũi tên còn lại.
 Đây là một cách đơn giản để mô tả lại luồng sự kiện được xử lý trong MVC:
- User tương tác với View, bằng cách click vào button, user gửi yêu cầu đi.
- Controller nhận và điều hướng chúng đến đúng phương thức xử lý ở Model.
- Model nhận thông tin và thực thi các yêu cầu.
- Khi Model hoàn tất việc xử lý, View sẽ nhận kết quả từ Model và hiển thị lại cho người dùng.
 

Ưu điểm và nhược điểm của MVC

1. Ưu điểm:
Thể hiện tính chuyên nghiệp trong lập trình, phân tích thiết kế. Do được chia thành các thành phần độc lập nên giúp phát triển ứng dụng nhanh, đơn giản, dễ nâng cấp, bảo trì..
2. Nhược điểm:
Đối với dự án nhỏ việc áp dụng mô hình MC gây cồng kềnh, tốn thời gian trong quá trình phát triển. Tốn thời gian trung chuyển dữ liệu của các thành phần.

- See more at: http://lmt.com.vn/home/php/tim-hieu-php/item/360-tim-hieu-mo-hinh-mvc-la-gi.html#sthash.ezMledD9.dpuf

Model bài toán nan giải dành cho các framework.

Model bài toán nan giải dành cho các framework.

Hầu hết các PHP Frameworkđều xây dựng trên mô hình M-V-C một trong những design pattern. Mô hình này sẽ tách code thành 3 phân vùng khác nhau với 3 trách nhiệm khác nhau. Controller sẽ đóng vai trò tiếp nhận request (yêu cầu) để chuyển chúng tới cho Model. Lúc này model sẽ vận hành các cấu trúc Active Record hoặc SQL thuần để lấy ra thông tin từ database sau đó đổ chúng vào dạng mảng. Lúc này khi controller yêu cầu tới request nào nó sẽ đẩy mảng thông tin đó vàoview. Tại view để lấy được các giá trị trong mảng, ta lại phải duyệt mảng để lấy ra từng phần tử đơn lẻ như thế. Việc này càng làm cho ứng dụng trở nên chậm chạp. Góp phần gia tăng % "rùa" củaPHP Framework.

PHP Frameworks nào phổ biến nhất hiện nay ?

Dưới đây là 5 framework được đánh giá là tốt và phổ biến nhất hiện nay:
The Zend Framework

Zend Framework có 1 cộng đồng phát triển rộng lớn, và nó tập trung vào các ứng dụng web theo phong cách 2.0. Vì được phổ biến rộng rãi, và có 1 cộng đồng người dùng tích cưc, Zend được gọi là “Công ty PHP”. Zend là 1 trong những framework phổ biến nhất hiện nay. Nó có các tính năng mạnh mẽ, thường được sử dụng cho các công ty lớn, và bạn cần phải có lượng kiến thức khá sâu rộng về PHP để có thể sử dụng được nó.

CakePHP
CakePHP là 1 lựa chọn tuyệt với cho những lập trình viên có kiến thức nâng cao về PHP. Nó dựa trên cùng 1 nguyên tắc thiết kế với Ruby on Rails, là 1 framework mạnh về khía cạnh rapid development , giúp lập trình viên đẩy nhanh quá trình phát triển ứng dụng của họ. Với các hệ thống hỗ trợ, tính đơn giản và mỗi trường mở cao đã giúp cho CakePHP trở thành 1 trong nhữngframework phổ biến nhất hiện nay.

Symfony
Symfony được ra đời nhằm mục đích giúp đỡ nâng cao hơn cho những lập trình viên muốn tạo ra các ứng dụng website doanh nghiệp. Đây là 1 PHP framework mã nguồn mở với đầy đủ các tính năng cần thiết. nhưng nó có vẻ chạy chậm hơn các framework khác. 

Codelgniter
Codelgniter được biết đến như 1 framework dễ hiểu và dễ sử dụng, cho hiệu suất cao. Không giống như Symfony, PHP framework này phục vụ mục đích lý tưởng cho việc xây dưng các ứng dụng chia sẻ , lưu trữ. Nó cung cấp các giải pháp đơn giản, và có một thư viện video hướng dẫn phong phú, diễn đàn hỗ trợ, và cung cấp sẵn 1 hướng dẫn sử dụng cho người mới bắt đầu. PHP framework này rất phù hợp cho 1 người mới làm quen với framework.

Seagull
Seagull cũng là 1 PHP framework tốt phục vụ cho việc xây dưng website và các GUI. Nó là 1 framework cực kỳ dễ sử dụng cho cả những người mới mới làm quen với lập trình PHP đến những chuyên gia trong lập trình PHP. Với những người mới làm quen với lập trình PHP, Seagull cung cấp 1 thư viện các mẫu ứng dụng có thể được tùy chỉnh để phù hợp với nhu cầu của bạn. Đối với các chuyên gia PHP, Seagull cung cấp các tùy chọn máy chủ, bao gồm các phương pháp hay nhất, tiêu chuẩn, và modular codebase – giúp các lập trình viên xây dựng các ứng dụng web một cách nhanh chóng và dễ dàng. Seagull có một cộng đồng phát triển rộng lớn và nhiều tài liệu hướng dẫn hỗ trợ.

Tóm lại:
PHP framework là 1 giải pháp tuyệt vời cho các lập trình viên phát triển các kỹ năng như: giảm thiểu việc viết lại mã, tăng tốc quá trình phát triển ứng dụng, và chuẩn hóa mã lệnh khi xây dựng các ứng dụng web. Không chỉ giúp các bạn cải thiện tốc độ phát triển ứng dụng, nó còn giúp bạn giảm thiểu các lỗ hổng bảo mật 1 cách triệt để. PHP framework phù hợp cho cả những người mới làm quen hay những bạn đã có kiến thức vững về PHP.

Ngày nay, có rất nhiều PHP framework được cung cấp, và vì vậy chắc chắn các bạn có thể tìm ra một framework có các tính năng phù hợp với nhu cầu của mình -- hỗ trợ, tốc độ, quy mô và nhiều hơn nữa. Một số PHP framework phổ biến nhất hiện này bao gồm: Zend Framework, CakePHP, Symfony, Codelgniter, và Seagull.