Tân Hồng IT – Tân Hồng IT https://tanhongit.com Kiến thức tin học, máy tính, lập trình, thủ thuật tiện ích Mon, 09 Mar 2020 03:45:51 +0000 en-US hourly 1 https://wordpress.org/?v=5.3.2 https://tanhongit.com/wp-content/uploads/2020/02/favicon-tanhongit.png Tân Hồng IT – Tân Hồng IT https://tanhongit.com 32 32 Cách làm việc với code của người khác https://tanhongit.com/cach-lam-viec-voi-code-cua-nguoi-khac/ https://tanhongit.com/cach-lam-viec-voi-code-cua-nguoi-khac/#respond Mon, 09 Mar 2020 03:41:49 +0000 https://tanhongit.com/?p=2525 Xem code hay làm việc với code của người khác là một kỹ năng cơ bản của developer. Dành thời gian tìm hiểu và code đó thậm chí có thể trở thành của riêng bạn. Hôm nay tôi sẽ xem xét một số phương pháp tốt nhất để làm việc với code của người khác, […]

The post Cách làm việc với code của người khác appeared first on Tân Hồng IT.

]]>
Xem code hay làm việc với code của người khác là một kỹ năng cơ bản của developer. Dành thời gian tìm hiểu và code đó thậm chí có thể trở thành của riêng bạn.

Hôm nay tôi sẽ xem xét một số phương pháp tốt nhất để làm việc với code của người khác, đọc code di sản (legacy) một cách hiệu quả. Đây không phải là một chủ đề dễ dàng để viết đầy đủ.

lam viec code nguoi khac
Cách làm việc với code của người khác

Để làm cho quá trình làm việc với code của người khác dễ thở hơn, tôi tập trung vào các mục chính sau:

  • Tương tác
  • Quan sát
  • Chạy thử nghiệm – Test
  • Fix Bugs thiết kế dành cho người mới
  • Tìm Tài nguyên sẵn có
  • Sử dụng một IDE tốt
  • Đọc sách & Blogs
  • Đóng góp Tài liệu
  • Hãy cẩn trọng

Tương tác

Các lead developer là ai? Họ ở đâu? Có phải họ có mặt trực tiếp trong văn phòng của bạn? Nếu vậy, hãy nói chuyện với họ hoặc gửi email cho họ. Những người này hẳn là có kiến thức tốt nhất về dự án.

Bạn có phải là nhân viên làm việc từ xa (remote) hoặc freelancer? Công ty hoặc dự án có các kênh thông tin liên lạc không? Các developer dùng IRC, Slack, Twitter, email, Trello hay cái gì khác?

Hãy chắc chắn rằng bạn đang cùng nơi với họ. Một chỉ trích thường nhằm vào Zend Framework 2 là không có cộng đồng năng động. Không hẳn vậy, vì kênh IRC của họ đang hoạt động hàng ngày. Hãy đảm bảo bạn đang sinh hoạt cùng chỗ với các developer và các thành viên khác trong team.

Quan sát

Khi bạn lần đầu vào một dự án, đừng quá khắt khe với bản thân. Đừng mong đợi biết được tất cả mọi thứ ngay từ đầu. Tôi từng nghe nói về chuyện mất ba tuần đến ba tháng làm việc hàng ngày với codebase (code nền tảng đã có sẵn) trước khi một developer có thể thực sự làm việc hiệu quả với codebase đó.

Một số người có quan niệm sai lầm rằng bạn có thể, bằng cách nào đó, chỉ cần nhảy vào và ngay lập tức làm việc hiệu quả. Có lẽ họ đã xem quá nhiều phim của Hollywood như Swordfish.

Các codebase mất thời gian để học vì chúng được xây dựng từ những ý tưởng, định kiến, niềm tin và cách tiếp cận của tất cả các developer làm việc trong dự án. Vì bạn là người mới, bạn sẽ không có bất kỳ kiến thức nền nào cả.

Dưới đây là 5 cách hay để bắt đầu:

  • Dành thời gian xem lướt qua mọi thứ
  • Đặt câu hỏi
  • Cài đặt thử
  • Thử sử dụng cái vừa cài đặt thử
  • Đọc qua các comment trong code và các tài liệu liên quan

Đừng khắt khe với bản thân, hãy cho mình cơ hội để có được một sự khởi đầu tốt. Sau một thời gian, bạn sẽ bắt đầu hiểu rõ hơn về cách ứng dụng được xây dựng.

Tại giai đoạn này, hãy tiến nhanh hơn bằng cách hỏi các developer khác và các senior developer. Bạn hẳn đã có một danh sách các câu hỏi khi bạn lướt qua codebase.

Hãy dành thời gian ra để hỏi các developer khác lời giải thích cho các khúc mắc của bạn. Đừng e ngại, hãy hành động và nhận được câu trả lời mà bạn cần.

Chạy Test

1411369515running-phpunit-1024x649.png

Bất kỳ codebase tốt nào đều có các test. Nếu không thì thật không hay. Thực ra có thể là các developer team này chưa bao giờ thực hiện test, nhưng tôi sẽ hơi quan ngại nếu họ không làm điều này.

Nếu có test, hãy chạy thử. Có pass hết không? Tôi đã gặp nhiều codebase có một bộ các test mà không ai có thể chạy qua được. Liệu chúng đã được cập nhật chưa?

Sau khi bạn đã thử chạy chúng, hãy đọc. Nếu chúng được viết tốt, chúng sẽ mô tả cách ứng dụng làm việc, nó sẽ làm gì, và các thành phần kết dính với nhau như thế nào. Sẽ mất thời gian để đi sâu vào những thứ này.

Fix Bugs thiết kế cho người mới

Một cách dễ dàng để bắt đầu là tìm hiểu tại sao xuất hiện bug và fix các bug dành cho người mới hoặc junior developer trong dự án. Hai ví dụ tốt là Joind.In và ownCloud, trong hình dưới đây là bug tracker của ownCloud:

1411369550owncloud-1024x732.png

Bạn có thể thấy các ticket đã được đánh dấu rõ ràng. Hãy đọc qua và tham gia fix chúng. Những bug này không đòi hỏi quá cao về kỹ thuật, nhưng bạn sẽ có thể dễ dàng hòa mình vào dự án, xây dựng sự tự tin và kiến thức.

Thành tựu và kỹ thuật phức tạp thì rất tuyệt vời, nhưng nếu hiện tại không đạt được ngay hoặc sẽ mất rất nhiều thời gian, chúng sẽ không giúp gì cho sự tự tin và nhiệt huyết của bạn. Hãy bắt đầu từ những cái dễ và nhỏ.

Tìm tài nguyên sẵn có

Một trong những điều tốt nhất bạn có thể làm khi tiếp quản một codebase, hoặc khi tham gia vào một team hiện có, là tập hợp được nhiều tài nguyên nhất có thể. Không biết cần tìm gì ư? Dưới đây là một số ý tưởng để giúp bạn bắt đầu:

  • Bạn có quyền truy cập vào kho lưu trữ mail không?
  • Dự án hoặc công ty có wiki không?
  • Tài liệu dự án nào đã được biên soạn?
  • Bạn đã đọc qua version control history chưa?
  • Những người đóng góp có viết các commit message có ý nghĩa và nhất quán không?

Sử dụng một IDE tốt

1411369591phpstorm-syntax-highlighting-1024x794.png

IDE tốt thì quý như vàng. Dù bạn là một developer Ruby, Python, Go, Java, PHP hay ngôn ngữ nào khác, hãy tìm một IDE tốt dành riêng hoặc tùy chỉnh cho ngôn ngữ bạn lựa chọn.

Tôi đánh giá cao những người theo chủ nghĩa thuần túy, thích VIM hoặc Emacs, điều đó OK thôi. Nhưng tôi là một người yêu IDE và IDE mà tôi lựa chọn là PhpStorm. Có rất nhiều những lựa chọn khác, chẳng hạn như Eclipse, TextMate, SublimeText, và VisualStudio.

Một khi bạn đã tìm thấy IDE cho mình, hãy bắt đầu sử dụng các tính năng nó cung cấp. Ở đây tôi lấy ví dụ cho PhpStorm, bạn có thể áp dụng những nguyên tắc này cho IDE bạn chọn.

Bắt đầu duyệt qua code và xem nó có theo một chuẩn nào không. Không nhất thiết phải là một chuẩn chính thức như PHP PSRs. Xem thử liệu developer có theo một phong cách nhất quán không hay là lộn xộn. Sử dụng các công cụ như mess detector và cyclomatic complexity tester để đánh giá chất lượng code.

Có tài liệu hướng dẫn nào không? Nếu có thì IDE của bạn sẽ có thể sử dụng chúng khi bạn kiểm tra code. Tiếp theo, sử dụng một trình gỡ lỗi (debugger), chẳng hạn như xhprof, Xdebug hoặc Zend Debugger, rồi chạy ứng dụng xem nó hoạt động như thế nào.

Nó làm gì? Cấu trúc dữ liệu nào nó tạo ra và sử dụng? Nó có lặp lại các khối code không cần thiết không? Có nhiều thứ hơn nữa cần xem xét, nhưng sử dụng các tính năng mà IDE cung cấp sẽ giúp bạn dễ thở hơn nhiều.

Đọc và Học hỏi

Điều này đúng cho cá nhân tôi. Càng học hỏi nhiều, chúng ta càng trở nên khôn lớn và làm được việc. Chúng ta không phải là người đầu tiên trên con đường chúng ta đang đi. Nhiều, rất nhiều những người khác đã đi trước chúng ta và đã mắc những lỗi tương tự như chúng ta.

Hãy tiết kiệm cho mình một chút thời gian khi nghĩ về quá trình học tập khó khăn của những người đi trước và học hỏi từ họ. Nhiều developer giỏi cũng vừa là các tác giả viết sách và các blogger.

Một trong những tác giả yêu thích của tôi là Martin Fowler, người đã xuất bản một cuốn sách tuyệt vời về chủ đề tái cấu trúc (refactoring). Cũng có những cuốn sách khác rất tuyệt vời, chẳng hạn như Design Patterns, và các trang web như SourceMaking.com.

Tự tìm hiểu và tiếp tục học hỏi từ các nguồn tài nguyên như vậy. Nó không hề dễ dàng, nhưng phần thưởng là rất xứng đáng.

Đóng góp Tài liệu

Đây là một trong những điều mà tôi không làm đủ. Thật dễ dàng khi ngồi ngoài và chỉ trích một codebase, framework hay dự án phần mềm. Thay vì làm điều đó, hãy bắt tay vào tham gia đóng góp.

Tài liệu không phải là dành cho các lập trình viên thất bại, các nhà thiết kế đồ họa hay những người không am hiểu kỹ thuật. Các dự án phần mềm lớn nhất luôn đề xuất rằng nơi tốt nhất để bắt đầu là tài liệu hướng dẫn.

Một trong những dự án nổi bật nhất mà thực hiện điều này là Linux Kernel. Còn cách nào tốt hơn để học một cái gì đó hơn là tài liệu? Sau tất cả, nếu bạn thực sự biết điều gì đó thì bạn mới có thể làm tài liệu về nó.

Vì vậy, nếu là một dự án mã nguồn mở, hãy nhảy vào, tìm hiểu về nó, đọc qua code, ghi chép lại, và sau đó đóng góp tài liệu. Nếu đó là một ứng dụng nội bộ, hãy là người đầu tiên bắt đầu làm tài liệu; thậm chí nếu không có ai khác ngoài bạn.

Có thể sẽ không có tài liệu; nhưng điều đó thật sự khủng khiếp. Mọi dự án đều phải bắt đầu từ một nơi nào đó. Khi bạn làm việc với code, hãy viết ra những gì bạn biết.

Những developer giỏi nhất mà tôi biết, ví dụ như Lorna Jane, bắt đầu viết blog theo cách này. Cô viết blog để lưu giữ những gì đã học được, mà sau này trở thành một trong những blog PHP phổ biến nhất.

Hãy cẩn trọng

Điểm cuối cùng: Hãy suy nghĩ cẩn trọng đối với các developer mà bạn đang xem và làm việc trên di sản của họ. Bạn không biết về sự nghiệp và trình độ học vấn của họ, và những thứ này đã hạn chế họ như thế nào, khi họ viết ra những dòng code mà bạn đang đọc.

Hơn nữa, level kĩ năng hiện tại của bạn đang ở mức nào? Sẽ là tùy tiện khi chúng ta trẻ hơn, non hơn, và ít kinh nghiệm, lại đi phán xét người khác.

Chúng ta nghĩ rằng chúng ta biết tất cả và những kỳ vọng, những khái niệm và phương pháp tiếp cận của chúng ta là những cách đúng và chính xác. Nhưng có thực sự đúng là như vậy không? Tôi tin rằng, khi chúng ta trưởng thành và lớn hơn một chút, chúng ta cũng trở nên khôn ngoan hơn và chấp nhận vô vàn các phương pháp tiếp cận phát triển phần mềm mà đã từng tồn tại.

Chúng ta có thể không cần phải đồng ý với họ, nhưng họ không hẳn là đã sai. Họ có thể có rất nhiều điều để dạy chúng ta, có thể giúp chúng ta lớn khôn. Vì vậy, hãy luôn cố gắng và suy nghĩ ân cần với những người khác và vị trí của họ. Đừng trở thành một người mới đáng ghét, chỉ ngón tay và đổ lỗi. Hành xử kiểu này sẽ không giúp ích cho bất kì ai, đặc biệt là chính bản thân bạn.

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

via viblo and sitepoint

CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

The post Cách làm việc với code của người khác appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/cach-lam-viec-voi-code-cua-nguoi-khac/feed/ 0
PHP OOP – Bài 1: Lập trình hướng đối tượng trong PHP là gì? https://tanhongit.com/lap-trinh-huong-doi-tuong-trong-php-la-gi/ https://tanhongit.com/lap-trinh-huong-doi-tuong-trong-php-la-gi/#respond Thu, 05 Mar 2020 11:51:25 +0000 https://tanhongit.com/?p=2499 Đây là bài viết mở đầu cho series học Lập trình PHP hướng đối tượng ( PHP OOP) của chúng ta và trong bài này chúng ta sẽ đi qua một số khái niệm về đối tượng và lập trình hướng đối tượng là gì, tìm hiểu về những ưu điểm của lập trình hướng […]

The post PHP OOP – Bài 1: Lập trình hướng đối tượng trong PHP là gì? appeared first on Tân Hồng IT.

]]>
Đây là bài viết mở đầu cho series học Lập trình PHP hướng đối tượng ( PHP OOP) của chúng ta và trong bài này chúng ta sẽ đi qua một số khái niệm về đối tượng và lập trình hướng đối tượng là gì, tìm hiểu về những ưu điểm của lập trình hướng đối tượng và một số khái niệm liên quan khác nằm trong chuyên đề này.

Vậy đối tượng ( object) là gì?

Trong lập trình hướng đối tượng, đối tượng được hiểu như là 1 thực thể: người, vật hoặc 1 bảng dữ liệu, . . .

Một đối tượng bao gồm 2 thông tin: thuộc tính và phương thức

  • Thuộc tính chính là những thông tin, đặc điểm của đối tượng. Ví dụ: một người sẽ có họ tên, ngày sinh, màu da, kiểu tóc, . . .
  • Phương thức là những thao tác, hành động mà đối tượng đó có thể thực hiện. Ví dụ: một người sẽ có thể thực hiện hành động nói, đi, ăn, uống, . . .

Lập trình hướng đối tượng là gì?

Lập trình hướng đối tượng (Object-oriented programming – OOP)  là kiểu viết code sử dụng lớp (classes), quan hệ (relationships), thuộc tính (properties) và phương thức (methods) của đối tượng (objects) nhằm giảm thời gian viết code và giúp đơn giản hóa việc lập trình.

OOP là kỹ thuật cho phép lập trình viên tạo ra các đối tượng trong code, từ đó trừu tượng hóa đối tượng thực tế trong cuộc sống. Hướng tiếp cận dựa trên lập trình đối tượng này là một trong những khuôn mẫu phát triển phần mềm, đặc biệt là phần mềm cho các doanh nghiệp.

lap trinh huong doi tuong oop php la gi
Lập trình hướng đối tượng trong PHP là gì?

Đây là phương pháp lập trình hỗ trợ công nghệ đối tượng (OOP) giúp tăng năng xuất và đơn giản hóa công việc xây dựng phần mềm, bảo trì phần mềm, cho phép lập trình viên tập trung vào các đối tượng giống như trong thực tế.

Thực tế khi làm một việc gì đó, chúng ta sẽ quan tâm đến hai điều: vật bị tác động và hành động. Với lập trình cũng vậy, nếu chúng ta tập trung vào hành động thì đó là lập trình hướng thủ tục còn nếu tập trung vào các vật thể hay đối tượng nào đó được tác động thì đó là lập trình hướng đối tượng.

Ví dụ dưới đây sẽ mô tả về một ứng dụng lấy thông tin của học sinh theo 2 phương pháp lập trình hướng thủ tục và lập trình hướng đối tượng.

Phương pháp lập trình theo hướng thủ tục:

<?php
function getPersonnel()
{
    $name = 'Nguyen Minh Man';
    $age = 18;
    $class = '12A1';
    return $name . '-' . $age . '-' . $class;
}
echo getPersonnel();

Phương pháp lập trình theo hướng đối tượng OOP

<?php
//tạo  class User
class User
{
    public  $name = "Nguyen Minh Man";
    private $age;
    protected $class;
    private $info;

    public function setUser($age, $class)
    {
        $this->age = $age;
        $this->class = $class;
        $this->getPersonnel();
    }
    protected function getPersonnel()
    {
        return $this->info = $this->name . ' is ' . $this->age . ' years old' . ' of ' . $this->class;
    }

    public function getInfo()
    {
        return $this->info;
    }
}
$user = new User(); //tạo một đối tượng mới từ class User

$user->setUser(18, '12A1');
echo $user->getInfo();
?>

Các bạn nhìn thấy mặc dù từ ví dụ trên ta thấy code theo phương pháp lập trình hướng đối tượng nó dài hơn, tuy nhiên, sau khi các bạn học kiến thức đầy đủ về phương pháp này bạn sẽ thấy công dụng của nó rất thuận lợi đối với một dự án lớn có các file được liên kết với nhau.

Ví dụ như khi muốn thay đổi giá trị nào đó thì bạn chỉ cần thay đổi trong một hàm thành phần nhất định, toàn bộ mã nguồn của bạn khi này có các file được quan hệ với nhau sẽ đồng loại thay đổi theo.

Ưu điểm của lập trình hướng đối tượng OOP

  • Dễ dàng quản lý code khi có sự thay đổi chương trình.  Thay vì việc thay đổi các mã nguồn của đối tượng mà giờ đây lập trình viên chỉ cần thay đổi một số hàm thành phần.
  • Dễ mở rộng dự án.
  • Tiết kiệm được tài nguyên đáng kể cho hệ thống.
  • Có tính bảo mật cao.
  • Có tính tái sử dụng cao.
  • Phù hợp với thiệt lập cho những phần mềm phức tạp, phần mềm lớn.

Nhược điểm của lập trình hướng đối tượng OOP

Lập trình hướng đối tượng OOP có nhượng điểm là có thể khiến dữ liệu được xử lý tách rời, khi cấu trúc dữ liệu thay đổi sẽ dẫn đến việc thuật toán bị thay đổi theo.

Những tính chất của lập trình hướng đối tượng OOP

Lập trình hướng đối tượng có 4 tính chất:

  • Abstraction – Tính trừu tượng.
  • Inheritance – Tính kế thừa.
  • Encapsulation – Tính đóng gói.
  • Polymorphism – Tính đa hình.

Về các tính chất trên mình sẽ nói chi tiết sau và các bạn sẽ được học qua các bài tiếp theo của series này nhé!

Tham khảo:

Kết thúc

Qua bài học đầu tiên, mình đã giới thiệu cho các bạn khái niệm về lập trình hướng đối tương OOP và một số khái niệm khác cũng như những ưu và nhược điểm của nó. Mong các bạn sẽ phát triển hơn trong việc học tập của bản thân và tiếp tục đón những bài viết tiếp theo trong series học PHP nâng cao OOP – lập trình PHP hướng đối tượng nhé!

Xem thêm:

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!
CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

The post PHP OOP – Bài 1: Lập trình hướng đối tượng trong PHP là gì? appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/lap-trinh-huong-doi-tuong-trong-php-la-gi/feed/ 0
Lộ trình học PHP từ cơ bản đến nâng cao chuyên nghiệp https://tanhongit.com/lo-trinh-hoc-php-tu-co-ban-den-nang-cao-chuyen-nghiep/ https://tanhongit.com/lo-trinh-hoc-php-tu-co-ban-den-nang-cao-chuyen-nghiep/#respond Thu, 27 Feb 2020 22:59:57 +0000 https://tanhongit.com/?p=2452 Các bạn đang muốn học lập trình Website? các bạn chưa biết nên bắt đầu từ đâu và các bạn chưa biết mình nên theo lập trình web phía Back-end hay Full-Stack như thế nào? Bài viết này sẽ cho các bạn  biết về lộ trình học lập trình website từ cơ bản đến nâng […]

The post Lộ trình học PHP từ cơ bản đến nâng cao chuyên nghiệp appeared first on Tân Hồng IT.

]]>
Các bạn đang muốn học lập trình Website? các bạn chưa biết nên bắt đầu từ đâu và các bạn chưa biết mình nên theo lập trình web phía Back-end hay Full-Stack như thế nào? Bài viết này sẽ cho các bạn  biết về lộ trình học lập trình website từ cơ bản đến nâng cao với ngôn ngữ chủ đạo là PHP.

lo trinh hoc php
Lộ trình học PHP từ căn bản đến nâng cao

Tìm hiểu sơ qua về ngôn ngữ PHP

PHP là ngôn ngữ kịch bản phổ biến nhất trên website hiện nay. Nó được viết tắt của “Hypertext Preprocessor” là một ngôn ngữ lập trình mã nguồn mở được chạy ở phía server nhằm sinh ra mã html trên client rất phổ biến và được dùng trong phát triển ứng dụng Website.

Với đặt tính nhanh, linh hoạt, hữu dụng trong thực tế và được tối ưu hoá qua nhiều phiên bản, dễ học nên PHP trở thành một ngôn ngữ lập trình web rất phổ biến và được ưa chuộng để phát triển mọi ứng dụng web từ blog đến các website nối tiếng.

Ví dụ như các ông lớn Facebook, Yahoo, Google đều ứng dụng với ngôn ngữ này.

Vậy trước khi bắt tay vào học ngôn ngữ PHP, chúng ta có cần có trước những kiến thức cơ bản nào khác không. Đáp án đối với bản thân mình là nên có.

Mặc dù chúng ta có thể bắt tay vào học PHP ngay cũng được, nhưng bạn sẽ gặp rất nhiều trở ngại trong quá trình học. Cho nên dù không nhiều thì ít, các bạn vẫn nên chuẩn bị cho bản thân một số kiến thức dưới đây trước khi học PHP.

Kiến thức nên có trước khi bắt đầu học lập trình PHP

Học html cơ bản

HTML là ngôn ngữ đánh dấu siêu văn bản giúp cho bạn tạo khung xương của website

Bạn nên học qua về HTML, HTML5

Học CSS cơ bản

Bạn nên học CSS, CSS3, Bootstrap sẽ giúp bạn trang trí cho website thêm phần sinh động.

Học Javascript

Có Javascript sẽ giúp cho website trở nên tương tác hơn.

  • Javasript cơ bản
  • jQuery: Thư viện hiệu ứng của Javascript

Với bộ 3 HTML + CSS + Javascript này bạn đã trở thành một lập trình viên front-end có đủ kiến thức rồi. Học xong 3 phần trên, các bạn sẽ rất dễ nắm bắt những công nghệ mới khi tiếp xúc sau này.

Học MySQL

Database là một phần không thể thiếu của bất cứ ứng dụng nào. Nó là thứ để lưu trữ các dữ liệu của ứng dụng và người dùng. Trong PHP thì người ta thường ưa chuộng MySQL.

Vì thế bạn nên học MySQL để biết về cách tạo dựng và quản lý database như thế nào nhé!

Giờ hãy bắt đầu vào lộ trình học PHP căn bản đến nâng cao.

Lộ trình học PHP căn bản

Ta sẽ học về lý thuyết những kiến thức cơ bản nhất.

  1. Ngôn ngữ lập trình PHP là gì và hướng dẫn thiết lập môi trường để lập trình PHP
  2. Cú pháp trong PHP, Khai báo hằng và biến trong PHP
  3. Những kiểu dữ liệu trong PHP
  4. Toán tử và biểu thức trong PHP
  5. Biểu Thức Điều Kiện Trong PHP (Lệnh if, else, switch)
  6. Các loại Vòng lặp trong PHP (for, while, do while)
  7. Vòng lặp Foreach trong PHP (Các loại vòng lặp phần 2)
  8. lệnh Break, Continue và các hàm (function) exit, die thường dùng trong PHP
  9. Hàm (Function) Trong PHP
  10. Mảng (Array) Trong PHP
  11. Các hàm xử lý mảng (Array) trong PHP
  12. Chuỗi (String) Và Các Hàm Xử Lý Chuỗi Trong PHP

Học PHP nâng cao thêm một chút nữa

  1. Phương thức GET và POST trong PHP
  2. Cookie là gì? Cookie trong PHP
  3. Session trong PHP
  4. Các hàm xử lý và làm việc với file trong PHP
  5. Xử lý date time ngày tháng trong PHP
  6. Những hàm kiểm tra dữ liệu trong PHP (isset, empty,…)
  7. Xử lý ngoại lệ trong PHP.
  8. Xử lý lỗi (Error) trong PHP
  9. Những lệnh require, require_once, include, include_once trong PHP

Tiếp sau đó bạn sẽ cần học về Form trong php, truyền dữ liệu trong php từ form và kiểm tra form nhập liệu.

Gửi Emaill trong PHP.

Học cách sử dụng XML, DOM, Parsers trong PHP.

Các hàm bảo mật trong PHP

Học PHP nâng cao – Lập trình PHP hướng đối tượng OOP

Trong Phần học PHP nâng cao, Nội dung quan trọng nhất là Lập trình hướng đối tương OOP, nên ta sẽ có từng bài học theo lộ trình sau:

  1. Lập trình hướng đối tượng là gì?
  2. Class, properties, method of Object
  3. Magic methords
  4. Trừu tượng hoá dữ liệu
  5. Hàm khởi tạo và huỷ trong PHP
  6. Biến có sẵn được định nghĩa trước trong PHP
  7. Tính kế thừa trong php
  8. Các mức truy cập visibility private protected và public trong kế thừa
  9. Kế thừa lồng nhau trong php
  10. Tính đóng gói và đa hình trong php
  11. Lớp trừu tượng abstract trong php hướng đối tượng
  12. Get set và magics methods __get __set
  13. Autoloading require, require_one
  14. Ghi chú với docblocks
  15. Interface là gì?
  16. Trait là gì?
  17. Self và this khác nhau như thế nào?
  18. Final class là gì?

Nâng cao thêm – Học PHP và MySQL

Để học tốt chương trình học PHP và MySQL, chúng ta phải nắm vững kiến thức về lập trình frontend, bao gồm HTML, CSS, và Javascript. Tư duy logic tốt, khả năng xử lý vấn đề thực tiễn, khả năng tìm hiểu tài liệu, và ngoại ngữ sẽ là một lợi thế.

  1. MySQL là gì?
  2. Mối liên hệ giữa MySQL và PHP
  3. Tạo CSDL
  4. Tạo Bảng (table)
  5. Kết nối và truy vấn CSDL MySQL
  6. Thiết lập quan hệ giữa các bảng trong CSDL (khóa chính, khóa ngoại, contrains…)
  7. Chọn (Select) dữ liệu MySQL
  8. Thêm (Insert) dữ liệu MYSQL
  9. Chỉnh sửa (Update) dữ liệu MYSQL
  10. Xoá (Delete) dữ liệu MySQL
  11. Cơ chế prepared câu SQL trong PHP
  12. Thao tác với CSDL trong PHP thông qua PDO

Lập trình phát triển ứng dụng PHP

  1. Hiển thị sản phẩm trên trang chủ và theo từng chuyên mục sản phẩm
  2. Tìm kiếm và phân trang trong PHP
  3. Đăng ký, đăng nhập, ghi nhớ đăng nhập, quên mật khẩu trong php
  4. Upload file trong PHP
  5. Đếm số người Online
  6. Hệ thống bình chọn bằng PHP và MySQL
  7. Tạo Giỏ hàng trong PHP
  8. Xây dựng chức năng checkout
  9. Tích hợp thanh toán trực tuyến vào giỏ hàng
  10. Tìm kiếm với PHP và Ajax
  11. Sử dụng Google reCAPTCHA với PHP
  12. Quản lý đơn hàng bằng php và mysql
  13. Tạo trang quản lý sản phẩm
    1. Quản lý menu
    2. Quản lý sản phẩm: thêm, xoá, sửa, update.
    3. Chức năng Quản lý User.
    4. Quản lý chuyên mục.

Tìm Hiểu Mô Hình MVC Với PHP

Học Framework của PHP

Học Laravel

Nguồn tài nguyên, tài liệu tốt nhất để học Lập trình PHP

Các bạn có thể tham khảo một số nguồn tài liệu chuyên về PHP bên dưới.

  1. Học tập từ tài liệu trên W3 Schools
  2. Đọc documents trên php.net

Ngoài ra các bạn cũng có thể đăng lý học những khoá học chất lượng từ Udemy.com, Tutorialspoint.com hoặc học qua video hướng dẫn trên Youtube.

Tất cả đều nhằm mục đích hỗ trợ cho việc học tập của các bạn, Việc còn lại phụ thuộc vào sự cần cù và đam mê của các bạn để trong quá trình học không bị chán nản mà bỏ giữa chừng nhé!

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!
CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

 

The post Lộ trình học PHP từ cơ bản đến nâng cao chuyên nghiệp appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/lo-trinh-hoc-php-tu-co-ban-den-nang-cao-chuyen-nghiep/feed/ 0
Bài 19: Xử lý ngoại lệ trong PHP – PHP Exceptions https://tanhongit.com/bai-19-xu-ly-ngoai-le-trong-php-php-exceptions/ https://tanhongit.com/bai-19-xu-ly-ngoai-le-trong-php-php-exceptions/#respond Wed, 26 Feb 2020 04:34:07 +0000 https://tanhongit.com/?p=2381 Ngoại lệ, error và xử lý ngoại lệ là những khái nhiệm rất quen thuộc đối với tất cả các lập trình viên. Bài viết này trình bày các vấn đề liên quan đến Exception trong PHP. PHP có cung cấp các cơ chế giúp bắt lỗi, giám sát các lỗi và xử lý các […]

The post Bài 19: Xử lý ngoại lệ trong PHP – PHP Exceptions appeared first on Tân Hồng IT.

]]>
Ngoại lệ, error và xử lý ngoại lệ là những khái nhiệm rất quen thuộc đối với tất cả các lập trình viên. Bài viết này trình bày các vấn đề liên quan đến Exception trong PHP. PHP có cung cấp các cơ chế giúp bắt lỗi, giám sát các lỗi và xử lý các lỗi có thể xảy ra khi lập trình.

Trong nhiều ứng dụng lớn, có thể mở rộng, trong các ứng dụng hướng đối tượng và các frameworks thì việc bắt được các Exception trong quá trình develop là điều cực kì tốt.

xu ly ngoai le php exception
Bài 19: Xử lý ngoại lệ trong PHP – PHP Exceptions

Ngoại lệ (Exception) trong PHP là gì?

Bạn có thể hiểu nôm na ngoại lệ như sau: Trong lập trình chúng ta sẽ tạo ra những đoạn code, hàm, mảng mới mong muốn nó thực hiện một hành động nào đó trong chương trình. Như vậy, tất cả các hành động có thể xảy ra mà khác với mong muốn đó thì nó chính là ngoại lệ (Exception).

Và chúng ta sẽ không bao giờ muốn cho chương trình của mình hoạt động sai mong muốn phải không nào. Vì thế mà ta cần xử lý ngoại lệ để tránh những ngoại lệ đó phá hỏng chương trình.

Trái ngược với hệ thống xử lý lỗi trong PHP, xử lý ngoại lệ là phương pháp hướng đối tượng để xử lý lỗi, cung cấp hình thức báo cáo lỗi linh hoạt và có kiểm soát hơn.

Các phương pháp xử lý ngoại lệ trong PHP

  • Sử dụng try, throw và catch.
  • Tạo lớp ngoại lệ tùy chỉnh.
  • Xử lý nhiều ngoại lệ.
  • Ném lại một ngoại lệ.
  • Thiết lập trình xử lý ngoại lệ cao cấp.

Xử lý ngoại lệ (Exception Handling) trong PHP

Sử dụng try, throw và catch

Ta sẽ có một số khái niệm cần lưu ý dưới đây:

Try − Một hàm sử dụng một exception nên nằm trong khối try. Nếu exception không xảy ra( không được kích hoạt), code sẽ tiếp tục như bình thường. Tuy nhiên, nếu exception xảy ra ( được kích hoạt) thì exception đó sẽ bị “thrown”.

Throw − Đây là cách bạn kích hoạt một exception. Mỗi “thrown” phải có ít nhất một “catch”.

Catch − Mỗi khối “catch” bắt một exception và tạo một đối tượng chứa thông tin của exception đó.

Cú pháp tổng quát của try catch

<?php
  try {
    //Thực hiện đoạn mã này có khả năng ném ra một ngoại lệ
  }
  catch (Exception $e) {
    //Xử lý ngoại lệ ở đây
  }
?>

Ví dụ:

<?php 
// PHP Program to illustrate normal 
// try catch block code 
function demo($var) { 
    echo "<br> Before try block"; 
    try { 
        echo "<br> Inside try block"; 
              
        // If var is zero then only if will be executed 
        if($var == 0) 
        { 
                  
            // If var is zero then only exception is thrown 
            throw new Exception('Number is zero.'); 
                  
            // This line will never be executed 
            echo "<br> After throw (It will never be executed)"; 
        } 
    } 
          
    // Catch block will be executed only  
    // When Exception has been thrown by try block 
    catch(Exception $e) { 
            echo "<br> Exception Caught: ", $e->getMessage(); 
        } 
          
        // This line will be executed whether 
        // Exception has been thrown or not  
        echo "<br> After catch (will be always executed)"; 
} 

// Exception will not be rised 
demo(2); 
echo '<br>';
echo '<br>';
// Exception will be rised here 
demo(0); 
?>

Kết quả:

Before try block
Inside try block
After catch (will be always executed)


Before try block
Inside try block
Exception Caught: Number is zero.
After catch (will be always executed)

Trong đó Hàm demo() kiểm tra nếu một số có bằng 0 hay không. Nếu điều kiện đúng ngoại lệ được ném ra. Khối “catch” lấy ra ngoại lệ và tạo ra một đối tượng ($e) chứa thông tin ngoại lệ. Thông báo lỗi từ ngoại lệ được lặp lại bằng cách gọi $e->getMessage() từ đối tượng ngoại lệ.

Trong ví dụ trên, hàm $e->getMessage() được sử dụng để lấy error message. Không chỉ có mỗi một hàm đó, dưới đây là một số hàm có thể được sử dụng từ lớp Exception trong PHP.

Một số hàm lấy error message

  • getMessage() − thông báo của exception
  • getCode() − code của exception
  • hàm getFile() − tên source file
  • getLine() − source line
  • getTrace() − n mảng của backtrace()
  • hàm getTraceAsString() − chuỗi được định dạng của trace
  • getClass() – class có exception

Từ ví dụ về try catch trên ta có thể thêm như sau:

<?php
// PHP Program to illustrate normal 
// try catch block code 
function demo($var)
{
    echo "<br> Before try block";
    try {
        echo "<br> Inside try block";

        // If var is zero then only if will be executed 
        if ($var == 0) {

            // If var is zero then only exception is thrown 
            throw new Exception('Number is zero.');

            // This line will never be executed 
            echo "<br> After throw (It will never be executed)";
        }
    }

    // Catch block will be executed only  
    // When Exception has been thrown by try block 
    catch (Exception $e) {
        echo "<br> Exception Caught: ", $e->getMessage();
        echo "<br> Exception Caught: ", $e->getFile();
        echo "<br> Exception Caught: ", $e->getCode();
        echo "<br> Exception Caught: ", $e->getLine();
        echo "<br> Exception Caught: ", $e->getTraceAsString();
    } 

    // This line will be executed whether 
    // Exception has been thrown or not  
    echo "<br> After catch (will be always executed)";
}

// Exception will not be rised 
demo(5);
echo '<br>';
echo '<br>';
// Exception will be rised here 
demo(0);
Before try block
Inside try block
After catch (will be always executed)


Before try block
Inside try block
Exception Caught: Number is zero.
Exception Caught: C:\wamp64\www\webdemo\index2.php
Exception Caught: 0
Exception Caught: 14
Exception Caught: #0 C:\wamp64\www\webdemo\index2.php(41): demo(0) #1 {main}
After catch (will be always executed)

Tạo lớp ngoại lệ tuỳ chỉnh

Để tạo một trình xử lý ngoại lệ tùy chỉnh, bạn phải tạo một lớp đặc biệt với các hàm có thể được gọi khi một ngoại lệ xảy ra trong PHP. Lớp này phải được kế thừa lớp Exception.

<?php 
class myException extends Exception { 
    function get_Message() { 
          
        // Error message 
        $errorMsg = 'Error on line '.$this->getLine(). 
                    ' in '.$this->getFile() 
        .$this->getMessage().' is number zero'; 
        return $errorMsg; 
    } 
} 
  
function demo($a) { 
    try { 
      
        // Check if 
        if($a == 0) { 
            throw new myException($a); 
        } 
    } 
      
    catch (myException $e) { 
      
        // Display custom message 
        echo $e->get_Message(); 
    } 
} 
  
// This will not generate any exception 
demo(5); 
  
// It will cause an exception 
demo(0); 
?>

Kết quả: Error on line 18 in C:\wamp64\www\webdemo\index2.php0 is number zero

Đầu tiên ta sẽ tạo một class có tên myException được kế thừa từ class Exception, như vậy, nó sẽ kế thừa tất cả các phương thức và thuộc tính từ lớp Exception.

Trong class trên sẽ tạo một hàm get_message để thông báo lỗi nếu một số truyền vào bằng 0.

Ra khỏi class, ta dựng một hàm demo() với nội dung bên trong thực hiện try catch để kiểm tra xem số truyền vào có bằng 0 không. Nếu số bằng 0, một ngoại lệ sẽ được ném và sau đó khối catch sẽ bắt được ngoại lệ về rồi hiển thị ra thông tin lỗi.

Xử lý nhiều ngoại lệ – Multiple Exceptions

Multiple Exceptions là cách sử dụng nhiều block try…catch để cố gắng bắt các ngoại lệ được ném ra.

Ở phương pháp này chúng ta có thể sử dụng các câu lệnh điều khiển như if…else, switch, hoặc các ngoại lệ lồng vào nhau.

Cú pháp tổng thể

try {
     // Some code...
} catch (ExceptionType1 | ExceptionType2 $e) {
     // Code to handle the exception
} catch (\Exception $e) {
     // ...
}

Ví dụ:

<?php

class A_Error extends Exception {}
class B_Error extends Exception {}
class C_Error extends Exception {}

try {
    throw new A_Error();
} 
catch (A_Error $e) { goto abc; }
catch (B_Error $e) { goto abc; }
catch (C_Error $e) {
abc:
    var_dump(get_class($e));
    echo "Error one";
}

Xử lý nhiều ngoại lệ sẽ có ích khi bạn muốn hiển thị thông điệp hoặc thực hiện một hành động nào đó tuỳ thuộc vào mỗi ngoại lệ được ném ra.

Thiết lập xử lý ngoại lệ cao cấp – Set Top Level Exception Handler

Hàm set_exception_handler() sẽ đặt tất cả hàm do người dùng đã xác định thành tất cả ngoại lệ chưa được lưu.

<?php
function myException($exception) {
  echo "<b>Exception:</b> " . $exception->getMessage();
}
 
set_exception_handler('myException');
 
throw new Exception('Uncaught Exception occurred');
?>

Trong đoạn mã trên không có khối “catch”. Thay vào đó, trình xử lý ngoại lệ cấp cao nhất được kích hoạt. Hàm này nên được sử dụng để bắt các ngoại lệ chưa được catch.

Kết quả:

Exception: Uncaught Exception occurred

Ví dụ khác:

<?php 
// PHP Program to illustrate normal 
// try catch block code 
// Function for Uncaught Exception 
function myException($exception) { 
      
    // Details of Uncaught Exception 
    echo "<br> Exception: " . $exception->getMessage(); 
} 
  
// Set Uncaught Exception handler 
set_exception_handler('myException');

function demo($var) { 
    echo "<br> Before try block"; 
    try { 
        echo "<br> Inside try block"; 
              
        // If var is zero then only if will be executed 
        if($var == 0) 
        { 
                  
            // If var is zero then only exception is thrown 
            throw new Exception('Number is zero.'); 
                  
            // This line will never be executed 
            echo "<br> After throw (It will never be executed)"; 
        } 
    } 
          
    // Catch block will be executed only  
    // When Exception has been thrown by try block 
    catch(Exception $e) { 
            echo "<br> Exception Caught: ", $e->getMessage(); 
        } 
          
        // This line will be executed whether 
        // Exception has been thrown or not  
        echo "<br> After catch (will be always executed)"; 
        if($var < 0) {  
          
            // Uncaught Exception 
            throw new Exception('Uncaught Exception occurred'); 
        } 
} 

// Exception will not be rised 
demo(2); 
echo '<br>';
// Exception will be rised here 
demo(0); 
// Uncaught Exception 
demo (-3); 
?>
Before try block
Inside try block
After catch (will be always executed)

Before try block
Inside try block
Exception Caught: Number is zero.
After catch (will be always executed)
Before try block
Inside try block
After catch (will be always executed)
Exception: Uncaught Exception occurred

Tham khảo:

Kết thúc

Bài viết trên mình đã liệt kê một vài cách để xử lý ngoại lệ trong lập trình PHP. Mỗi bài viết về kiến thức học PHP của mình đều có thể chưa hoàn toàn đầy đủ, cho nên mong các bạn hãy tra google khi tham khảo và mong bạn có thể gửi lại comment bổ sung bên dưới để mình có thể hoàn thiện lại bài viết hơn. Cảm ơn các bạn!

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

Tổng hợp Internet

CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

The post Bài 19: Xử lý ngoại lệ trong PHP – PHP Exceptions appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/bai-19-xu-ly-ngoai-le-trong-php-php-exceptions/feed/ 0
Bài 18: Những hàm kiểm tra dữ liệu trong PHP (isset, empty,…) https://tanhongit.com/bai-18-nhung-ham-kiem-tra-du-lieu-trong-php-isset-empty/ https://tanhongit.com/bai-18-nhung-ham-kiem-tra-du-lieu-trong-php-isset-empty/#respond Mon, 24 Feb 2020 09:52:16 +0000 https://tanhongit.com/?p=2382 Tiếp tục series học PHP căn bản, bài này chúng ta sẽ tìm hiểu về một số hàm dùng để kiểm tra dữ liệu hoặc biến về sự tồn tại của nó. Và những lợi ích của nó trong lập trình website PHP. Có rất nhiều hàm kiểm tra dữ liệu giá trị của một […]

The post Bài 18: Những hàm kiểm tra dữ liệu trong PHP (isset, empty,…) appeared first on Tân Hồng IT.

]]>
Tiếp tục series học PHP căn bản, bài này chúng ta sẽ tìm hiểu về một số hàm dùng để kiểm tra dữ liệu hoặc biến về sự tồn tại của nó. Và những lợi ích của nó trong lập trình website PHP.

Có rất nhiều hàm kiểm tra dữ liệu giá trị của một biến trong PHP. Mỗi hàm sẽ có một chức năng phụ thuộc vào từng loại biến và cách sử dụng khác nhau, Nhưng mình chỉ giới thiệu các hàm thông dụng thường hay dùng đó là isset(), empty() và is_null(),….

Tất cả các hàm được liệt kê trên này đều trả về một giá trị boolean. Nó sẽ rất có ích cho các bạn trong việc làm web sử dụng ngôn ngữ php. Nhưng nếu các chức năng này không được sử dụng đúng cách, chúng có thể gây ra các kết quả không mong muốn.

kiem tra du lieu isset php
Kiểm tra dữ liệu trong PHP (isset, empty,…)

Hàm isset($value)

Về hàm này mình đã từng nói sơ qua và áp dụng ví dụ rất nhiều lầm ở các bài viết trước đây rồi. Tác dụng của nó dùng để kiểm tra biến $value có tồn tại hay không. Nó sẽ trả về true chỉ khi biến không phải là null.

Thông thường bạn hay dùng hàm này để kiểm tra một biến trước khi xử lý thao tác đến nó.

Cú pháp

isset($value1, $value2 ......)

Tham số

  • $value1: Là biến thứ nhất cần kiểm tra (bắt buộc phải có)
  • $value2 ,…$value_n các biến còn lại cần kiểm tra( có thể có hoặc không)
<?php
$data = 'phpcanban';
if (isset($data))
    echo 'Biến này tồn tại';
else
    echo 'Biến này không tồn tại';
?>

Hàm isset() được sử dụng trong trường hợp nào

Trong quá trình biên dịch nếu trong code có sử dụng một biến không tồn tại thì trình biên dịch sẽ ngưng xử lý và thông báo lỗi ngay, chính vì vậy thông thường những trường hợp mà ta không chắc chắn là biến đó luôn tồn tại thì trước khi sử dụng hãy kiểm tra nó bằng isset.

Ngoài ra nó còn có một số ứng dụng sau:

  • Thường được sử dụng trong From kiểm tra sự xác định của biến
  • Kiểm tra sự xác định của phần tử trong mảng phục vụ cho xử lý và xuất giá trị trong mảng

Ví dụ:

//kiểm tra giá trị phần tử trong mảng
<?php
$var = array(
    "php",
    'laptrinh',
    null,
    27,
    "php can ban",
    null
);
foreach ($var as $value) {
    if (isset($value)) {
        echo 'this var is set <br />';
    } else {
        echo 'this var is not set <br />';
    }
}
/*output:
this var is set
this var is set
this var is not set
this var is set
this var is set
this var is not set*/
?>

Nếu biến đã được khai báo, nhưng sau đó lại được loại bỏ bởi hàm unset() thì khi kiểm tra với hàm isset() sẽ trả về kết quả FALSE.

Khi sử dụng isset () trên các thuộc tính đối tượng không thể tiếp cận, phương thức nạp chồng __isset () sẽ được gọi, nếu được khai báo.

Các bạn có thể tham khảo thêm về hàm isset tại đây.

Hàm empty($var)

Kiểm tra biến $var có phải giá trị trống hay không. Tất cả các giá trị như: số 0, giá trị null, giá trị rỗng, giá trị false đều được quy về là empty.

Cú pháp

empty($var);

Tham số

Tham số của hàm empty($var) chỉ hỗ trợ khi chỉ có mỗi một biến $var.

Nếu biến $var không tồn tại thì hàm này vẫn không báo lỗi và sẽ trả kết quả về false.

Những giá trị sau đấy được xem là rỗng:

  • “” (Chuỗi)
  • 0 (0 là số nguyên)
  • 0.0 (0 là số thực)
  • “0” (0 là chuổi)
  • NULL
  • FALSE
  • array() (là mảng rỗng)
  • $var; (biến chưa khai báo, không có giá trị)
Hàm empty($var) sẽ tương đương !isset($var) hoặc $var == false.
Cũng có thể ở một số trường hợp isset($var) trả về TRUE nhưng empty($var) lại trả về FALSE. Vì thế trong quá trình thiết lập các biểu thức điều kiện cần xác định rõ để tạo biểu thức thích hợp
<?php
$data = [];
if (empty($data))
    echo 'Biến này rỗng';
else
    echo 'Biến này không rỗng';

Hàm empty() được sử dụng trong trường hợp nào

  • Sử dụng để kiểm tra giá trị biến xem có rỗng hay không
  • Phục vụ cho qua trình kiểm tra chuẩn hóa dữ liệu khi thao tác đến nhận giá trị từ Form
//kiểm tra dữ liệu từ form đăng nhập
if (empty($_POST['password'])){
    echo 'Bạn chưa nhập tên mật khẩu';
}

Các bạn có thể tham khảo thêm về hàm empty tại đây.

Hàm is_null($var)

Hàm sẽ kiểm tra biến $var có phải giá trị null không.

Nói cách khác, nó chỉ trả về true khi biến là null . is_null () trái ngược với isset (), ngoại trừ một điểm khác biệt là có thể áp dụng ngay bây giờ cho các biến không xác định

<?php
$demo= null;
if (is_null($demo))
    echo 'Biến này là null';
else
    echo 'Biến này không phải là null';

Các bạn có thể tham khảo thêm về hàm is_null tại đây.

Một số hàm kiểm tra dữ liệu cho biến khác

is_array($var)

Hàm is_array() kiểm tra xem một biến $var có phải là một mảng hay không.

Hàm này trả về true nếu biến là một mảng, nếu không, nó trả về false / nothing.

<?php
$yes = array('this', 'is', 'an array');

echo is_array($yes) ? 'Array' : 'not an Array';
echo "\n";

$no = 'this is a string';

echo is_array($no) ? 'Array' : 'not an Array';
?>

is_string($var)

Kiểm tra biến $var có phải kiểu chuỗi hay không.

<?php
$values = array(false, true, null, 'abc', '23', 23, '23.5', 23.5, '', ' ', '0', 0);
foreach ($values as $value) {
    echo "is_string(";
    var_export($value);
    echo ") = ";
    echo var_dump(is_string($value));
}
?>

is_int($var) hoặc is_integer($var)

Kiểm tra biến $var có phải kiểu INT hay không.

<?php
$values = array(23, "23", 23.5, "23.5", null, true, false);
foreach ($values as $value) {
    echo "is_int(";
    var_export($value);
    echo ") = ";
    var_dump(is_int($value));
}
?>

is_float($var)

Kiểm ta biến $var có phải kiểu float hay không

var_dump(is_float(27.25));
var_dump(is_float('abc'));
var_dump(is_float(23));
var_dump(is_float(23.5));
var_dump(is_float(1e7));  //Scientific Notation
var_dump(is_float(true));
?>

is_double($var)

Kiểm tra biến $var có phải kiểu double hay không.

<?php
$var_name=127.55;
if (is_double($var_name))
echo 'This is a double value.<br>';
else
echo 'This is not a double value.<br>';
echo '<br>';
var_dump(is_double(85));
echo '<br>';
var_dump(is_double(1e8));
echo '<br>';
var_dump(is_double(true));
echo '<br>';
var_dump(is_double(array(23.3, 56, 6)));
?>

in_array($needle, $haystackarray)

Kiểm tra giá trị $needle có trong mảng $haystackarray hay không

<?php
$os = array("Mac", "NT", "Irix", "Linux");
if (in_array("Irix", $os)) {
    echo "Got Irix";
}
if (in_array("mac", $os)) {
    echo "Got mac";
}
?>

array_key_exists($key, $searcharray)

Kiểm tra key $key có trong mảng $searcharray hay không

<?php
$search_array = array('first' => 1, 'second' => 4);
if (array_key_exists('first', $search_array)) {
    echo "The 'first' element is in the array";
}
?>

is_numeric($var)

Hàm có tác dụng kiểm tra xem một biến có phải là số hay không

<?php
$demo = 20;
if (is_numeric($demo))
    echo 'Biến này là số';
else
    echo 'Biến này không phải là số';
?>

Còn có vô số hàm khác mà mình không thể liệt kê hết được, các bạn có thể vào php.net để tìm tòi và lục lọi những hàm phù hợp với bài toán của các bạn nhé. Các bạn có thể thao khảo link về function tại đây.

Kết thúc

Bạn sẽ phải thường xuyên dùng đến các hàm trên trong quá trình học tập cũng như làm việc với lập trình PHP, qua bài viêt mong bạn đã hình dung được cách sử dụng của chúng và ứng dụng vào mỗi trường hợp của bài toán thật phù hợp.

Mỗi bài viết về kiến thức học PHP của mình đều có thể chưa hoàn toàn đầy đủ, cho nên mong các bạn hãy tra google khi tham khảo và mong bạn có thể gửi lại comment bổ sung bên dưới để mình có thể hoàn thiện lại bài viết hơn. Cảm ơn các bạn!

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

The post Bài 18: Những hàm kiểm tra dữ liệu trong PHP (isset, empty,…) appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/bai-18-nhung-ham-kiem-tra-du-lieu-trong-php-isset-empty/feed/ 0
Bài 17: Xử lý date time ngày tháng trong PHP https://tanhongit.com/bai-17-xu-ly-date-time-ngay-thang-trong-php/ https://tanhongit.com/bai-17-xu-ly-date-time-ngay-thang-trong-php/#respond Sun, 23 Feb 2020 10:35:31 +0000 https://tanhongit.com/?p=2049 Ở bài viết trước đã học qua về cách xử lý đối với file trong PHP, tiếp tục series học PHP căn bản, bài này chúng ta sẽ tìm hiểu về phương pháp xử lý ngày tháng (date) trong PHP nhé! Vấn đề xử lý ngày tháng cực kì quan trọng khi bạn xử lý […]

The post Bài 17: Xử lý date time ngày tháng trong PHP appeared first on Tân Hồng IT.

]]>
Ở bài viết trước đã học qua về cách xử lý đối với file trong PHP, tiếp tục series học PHP căn bản, bài này chúng ta sẽ tìm hiểu về phương pháp xử lý ngày tháng (date) trong PHP nhé!

Vấn đề xử lý ngày tháng cực kì quan trọng khi bạn xử lý với các bài viết và đăng lên website. Ví dụ bạn cần in ra ngày tháng đăng bài viết hiển thị theo kiểu ngày / tháng / năm hoặc ngày – tháng -năm thì bắt buộc bạn phải biết cách sử dụng các hàm xử lý ngày tháng trong PHP thì mới làm được.

date time xu ly thoi gina ngay thang php
Bài 17: Xử lý date time ngày tháng trong PHP

Không những thế nó còn có liên quan đặc biệt đến cấu trúc cơ sở dữ liệu database nữa nên tầm quan trọng của việc xử lý thời gian này là không hề nhỏ.

Thiết lập múi thời gian (timezone) tại Việt Nam

Để cấu hình và làm việc với thời gian datetime đúng theo giờ Việt Nam thì bắt buộc ban phải thiết lập time zone( múi giờ) cho nó.

Cú pháp để thiết lập time zone là: date_default_timezone_set(‘timezone_identifier’);

Trong đó timezone_identifier là time zone mà bạn muốn thiết lập.

Mình đang ở Châu Á và ở Việt Nam – Hồ Chí Minh nên sẽ có timezone là Asia/Ho_Chi_Minh, mỗi khu vực sẽ chênh lệch nhau thời gian nên các bạn phải chú ý khi website có liên quan đến nước ngoài.

date_default_timezone_set('Asia/Ho_Chi_Minh');

Về múi giờ các bạn có thể tham khảo thêm tại: http://php.net/manual/en/timezones.php

Hoặc các bạn có thể sử dụng đoạn code dưới đây để xuất ra màn hình danh sách tất cả các timezone:

<?php
$timezone = DateTimeZone::listIdentifiers() ;
foreach ($timezone as $value){
    echo $value. '<br/>';
}
?>

Hoặc ta cũng có thể sử dụng hàm timezone_abbreviations_list để xuất ra timezone theo code bên dưới.

<?php
foreach (timezone_abbreviations_list() as $timezone) {
    foreach ($timezone as $value) {
        if (isset($value['timezone_id'])) {
            echo $value['timezone_id'] . '<br>';
        }
    }
}
?>
Lưu ý: Hàm thiết lập timezine này các bạn nên đặt ở đầu trang để cách đoạn code bên dưới hoạt động được hiệu quả và trính vị lỗi nhé!

Định dạng ngày tháng với hàm date()

Hàm date dùng để chuyển đổi thời gian theo format mà lập trình viên chỉ định mong muốn.

Cú pháp: date(format, timestamp);

Trong đó:

  • format: định  dạng ngày tháng năm, giờ phút giây.
  • timestamp(không bắt buộc) mặc định là hàm time() (chính là thời gian hiện tại).

Danh sách các format định dạng của date()

  1. h: Trả về giờ trong ngày kiểu 12h.
  2. H: Trả về giờ trong ngày kiểu 24h.
  3. i: Trả về phút trong giờ.
  4. s: Trả về số giây trong phút.
  5. S: Trả về hậu tố tiếng Anh cho ngày trong tháng, 2 ký tự. (st, nd, rd, th)
  6. d: trả về ngày trong tháng(bằng số từ 1- đến31).
  7. t: Số ngày trong 1 tháng (28 -> 31)
  8. j: Trả về ngày trong tháng, nhưng nếu ngày<10 sẽ không hiển thị số 0.
  9. D: Trả về định dạng thứ trong tuần bằng tiếng anh viết tắt. (có 3 chữ cái)
  10. l: Trả về đầy đủ thứ trong tuần (tiếng anh).
  11. m: Trả về tháng trong năm (bằng số từ 1 đến 12).
  12. M: Trả về tháng trong năm nhưng bằng tiếng anh viết tắt.
  13. y: Trả về 2 số cuối cùng của năm.
  14. Y: trả về đầy đủ 4 số của năm.
  15. c: trả về thời gian kiểu ISO 8601, thường dùng tạo cho thẻ meta publish time trong SEO
  16. z: trả về số ngày trong năm (Ngày trong năm bắt đầu từ 0 -> 365)

Ngoài ra các bạn có thể xem chi tiết đầy đủ về các format khác tại đây

echo date("Y-m-d"),'<br>'; //kết quả trả ra có dạng như 2020-02-23
 
echo date("d-m-Y"),'<br>'; //kết quả trả ra có dạng như 23-02-2020
 
echo date("d-m-Y H:i:s"),'<br>'; //kết quả trả ra có dạng như 22-02-2020 12:25:31

Ngoài ra chúng ta có thể phân cách ngày tháng năm bằng các dấu chéo / hoặc dấu gạch nối - hoặc dấu hai chấm :

Truyền thêm chuỗi trong hàm date()

Để cho nội dung chuỗi mà các bạn muốn hiển thị được như ý muốn thì các bạn thêm dấu chéo ngược \ vào trước mỗi ký tự của chuỗi.

<?php
echo date('\B\â\y \g\i\ờ \l\à d-m-Y H:i:s');
?>

Phương pháp xử lý ngày tháng nâng cao trong PHP

Kiểu định dạng ngày tháng chuẩn trong MySQL

Để lưu đúng định dạng ngày tháng trong MySQL thì bạn sử dụng format bên dưới.

date('Y-m-d H:i:s');

Đây là định dạng chuẩn để bạn có thể sử dụng để đăng bài cũng như upload hay comment một content nào đó mà có lưu lên database.

Chuyển đồi kiểu định dạng ngày tháng

Ngoài cách đổi kiểu định dạng trực tiếp trong hàm date() thì ta có có một cách thay đổi kiểu định dạng xuất ra ngày tháng khác đó là hàm date_format()

<?php
$date = date_create("2020-02-23"); //tạo ngày có thể dùng hàm date_create
echo date_format($date,"d/Y/m");  //đổi định dạng
//output: 23/2020/02
?>

Cộng trừ ngày tháng với mktime()

Hàm mktime() sẽ tính toán đưa ra ngày chính xác bởi các tham số truyền vào.

mktime($hour, $minute, $second, $month, $day , $year);
Lưu ý: Hàm này sẽ trả về thời gian kiểu INT nên bạn phải sử dụng hàm date() để chuyển đổi ra định dạng mong muốn.
Ví dụ: ta sẽ cộng thêm 5 ngày và 6 giờ đối với ngày 23/02/2020
<?php
$date = mktime((0 + 6), 0, 0, 02, (23 + 5), 2020);
echo date('d/m/Y', $date); //output: 28/02/2020
?>

Ví dụ 2: ta sẽ cộng thêm 26 giờ đối với ngày 23/02/2020

<?php
$date = mktime((0 + 26), 0, 0, 02, 23, 2020);
echo date('d/m/Y', $date); //output: 24/02/2020 - ngày đã tự động tăng thêm 1 ngày
?>

Ví dụ 3: ta sẽ cộng thêm 15 ngày đối với ngày 23/02/2020

<?php
$date = mktime(0, 0, 0, 02, (23 + 15), 2020);
echo date('d/m/Y', $date); //output: 09/03/2020 - ngày và tháng đã tự động tăng phù hợp
?>

Các bạn để ý từ 2 ví dụ trên, nếu bạn công số giờ có kết quả quá 24, hoặc cộng số ngày có kết quả vượt qua số ngày trong tháng đó thì giờ hoặc ngày hoặc tháng sẽ tự động tăng thêm 1. Tương tự đối với năm cũng vậy. Chính vì thế khi thực hiện công trừ đối với thời gian bạn hãy kiểm tra cẩn thận để không bị sai lệch nhé!

<?php
//xuất ra ngày kế tiếp(ngày mai)
$tomorrow  = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
echo date('d/m/Y', $tomorrow) . '<br>';

//Xuất ra ngày này tháng sau
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"),   date("Y"));
echo date('d/m/Y', $lastmonth) . '<br>';

//xuất ra ngày này năm sau
$nextyear  = mktime(0, 0, 0, date("m"),   date("d"),   date("Y")+1);
echo date('d/m/Y', $nextyear) . '<br>';
?>

Thay đổi ngày tháng date_modify()

Hàm date_modify() giúp ta thay đổi ngày tháng hiện hành. Đây cũng là một phương pháp dùng để tính toán công trừ cho ngày tháng các bạn nhé!

<?php
$date=date_create("2020-02-23");
date_modify($date, "+11 days"); // thay đổi ngày bằng phép cộng
echo date_format($date,"d/Y/m");  //đổi định dạng
?>
Như vậy ta có thể sử dụng hàm date_modify() và hàm mktime() để tính ngày tháng đều được cả. Nhưng đối với mình lại thường hay dùng hàm mktime để tính hơn.

Lấy thông tin ngày giờ theo dạng mảng với getdate()

Hàm getdate() sẽ giúp ta chuyển đổi dữ liệu ngày tháng về dạng mảng trong PHP và ta có thể xuất ra màn hình theo phương pháp sau

<?php
var_dump(getdate());
/*kêt quả:
array (size=11)
  'seconds' => int 16
  'minutes' => int 3
  'hours' => int 4
  'mday' => int 23
  'wday' => int 0
  'mon' => int 2
  'year' => int 2020
  'yday' => int 53
  'weekday' => string 'Sunday' (length=6)
  'month' => string 'February' (length=8)
  0 => int 1582430596*/
?>
Khóa Giá trị ví dụ
“seconds” số giây 0 đến 59
“minutes” số phút 0 đến 59
“hours” số giờ 0 đến 23
“mday” Ngày trong tháng 1 đến 31
“wday” Ngày trong tuần 0 (Sunday) đến 6 (Saturday)
“mon” Tháng 1 đến 12
“year” Năm 1999
“yday” Ngày của năm 0 đến 365
“weekday” Ngày trong tuần(dạng chữ) Sunday đến Saturday
“month” Tháng(dạng chữ) January đến December
0 time() timestamp,-2147483648 đến 2147483647.

Một số hàm lấy thông tin date/time khác

Lấy ngày cuối cùng của tháng

//last day of month
function lastday($month = '', $year = '') {
   if (empty($month)) {
      $month = date('m');
   }
   if (empty($year)) {
      $year = date('Y');
   }
   $result = strtotime("{$year}-{$month}-01");
   $result = strtotime('-1 second', strtotime('+1 month', $result));
   return date('Y-m-d', $result);
}
echo lastday('6','2020');

Ở hàm trên bạn sẽ thấy trong code có tạo 2 biến $year$month. Đầu tiên sẽ kiểm tra nếu ko có 2 thông số truyền vào phù hợp thì hàm sẽ tự đông lấy năm và tháng thông qua thời gian của hiện tại. Sau đó ta sẽ gán biến $result bằng ngày đầu tiên của tháng trong năm hiện tại. Tiếp tục ta gán đè biến $result thêm 1 lần nữa như sau:

ở lệnh strtotime(‘-1 second’, strtotime(‘+1 month’, $result)); ta thấy hàm strtotime được lồng bên trong sẽ tính bằng cách lấy năm hiện tại, còn tháng hiện tại thì cộng thêm 1 với thời gian là 0h0m0s. Khi đó ta có thời gian là năm hiện tại, tháng tiếp theo của tháng hiện tại và ngày đầu tiên của tháng đó.

Tiếp theo đi ra lệnh strtotime bên ngoài thời gian sẽ bị trừ đi 1s, tức là khi này từ 0h của ngày đầu tiên của tháng tiếp theo đó sẽ bị trừ còn 23h59m59s của ngày trước đó. Tự khắc thời gian sẽ bị lùi về 1 ngày cũng như lùi về 1 tháng. Như vậy kết quả xuất ra màn hình sẽ là ngày cuối cùng của tháng hiện tại.

Lấy ngày đầu tiên của tháng chỉ định.

//first day of month
function firstDay($month = '', $year = '')
{
    if (empty($month)) {
      $month = date('m');
   }
   if (empty($year)) {
      $year = date('Y');
   }
   $result = strtotime("{$year}-{$month}-01");
   return date('Y-m-d', $result);
}
echo lastday('6','2020');

Ở hàm trên bạn sẽ thấy trong code có tạo 2 biến $year$month. Đầu tiên sẽ kiểm tra nếu ko có 2 thông số truyền vào phù hợp thì hàm sẽ tự đông lấy năm và tháng thông qua thời gian của hiện tại. Sau đó ta sẽ gán biến $result bằng ngày đầu tiên của tháng trong năm hiện tại. Rồi ta xuất ra trong định dạng của hàm date()

Các bạn hãy tham khảo về hàm strtotime() ở mục bên dưới để hiểu hơn nhé.

Hàm strtotime() xử lý ngày tháng trong PHP

Hàm này giúp tạo ra một kiểu định dạng thời gian theo kiểu INT từ một chuỗi.

Trường hợp này được sử dụng nhiều khi lấy dữ liệu từ MySQL với định dạng là datetime.

cú pháp: strtotime($time)

echo date('d/m/Y',strtotime('23-02-2020'));

Công dụng của hàm này chưa phải chỉ mỗi như vậy. Nó còn dùng để thực hiện một số hàm nâng cao khác, ví dụ như hàm lấy ngày cuối , ngày đầu trong tháng đã được giới thiệu ở phần trên.

Phép toán với hàm strtotime

Bắt đầu từ thời điểm nào đó trong quá khứ hoặc tương lai.
<?php
$date = strtotime('+1 day',strtotime('2020-02-23'));    //+ tính từ ngày nào đó.
echo date("d/m/Y", $date);
//output: 24/02/2020

$date2 = strtotime('-2 day',strtotime('2020-02-23'));    //- tính từ ngày nào đó.
echo date("d/m/Y", $date2);
//output: 21/02/2020
?>
Cộng 1 tháng tính từ thời điểm hiện tại.
<?php
echo date( "Y-m-d", strtotime( "2020-02-23 +1 month" ) );   
//output: 2020-03-23
?>
Cộng gộp 2 thời gian khác nhau

Áp dụng từ việc công trừ ngày hoặc tháng từ 2 ví dụ trên, ta có thể sử dụng phương pháp đó để cộng dồn 2 thời gian khác nhau lại với nhau theo hàm bên dưới.

<?php 
date_default_timezone_set('Asia/Ho_Chi_Minh');
function add2times($hour_one,$hour_two){
    
    $h =  strtotime($hour_one);
    $h2 = strtotime($hour_two);
 
    $minute = date("i", $h2); //gán phút của giờ thứ 2
    $second = date("s", $h2);//gán giây của giờ thứ 2
    $hour = date("H", $h2);//gán giờ của giờ thứ 2
 
    //lấy giấy, phút, giờ của giờ thứ 1 cộng cho giờ thứ 2 bằng phép cộng dồn với hàm strtotime()
    $convert = strtotime("+$minute minutes", $h); //biến $minute là phút của giờ thứ 2
    $convert = strtotime("+$second seconds", $convert); //biến $second là giây của giờ thứ 2
    $convert = strtotime("+$hour hours", $convert);//biến $hour là giờ của giờ thứ 2
    echo date('H:i:s', $convert);
}
add2times(date('H:m:s'),"8:10:56");
?>

Hàm strtotime này có thể sau này mình sẽ viết một bài riêng để nói chuyên về nó sau vì hàm này được dùng để tính toán và ứng dụng rất nhiều.

So sánh sự chệnh lệch giữa 2 ngày

trong trường hợp so sánh độ chênh lệch của 2 ngày ta dùng hàm diff().

$date1->diff($date2);

<?php
$t1=new DateTime('2020-02-23 17:0:0');
$t2=new DateTime('2020-02-24 18:1:50');
$ss=$t1->diff($t2);
var_dump($ss);    
/*object(DateInterval)[3]
  public 'y' => int 0
  public 'm' => int 0
  public 'd' => int 1
  public 'h' => int 1
  public 'i' => int 1
  public 's' => int 50
  public 'f' => float 0
  public 'weekday' => int 0
  public 'weekday_behavior' => int 0
  public 'first_last_day_of' => int 0
  public 'invert' => int 0
  public 'days' => int 1
  public 'special_type' => int 0
  public 'special_amount' => int 0
  public 'have_weekday_relative' => int 0
  public 'have_special_relative' => int 0*/
//từ kết quả var_dump trên ta thấy độ chênh lệch là 1 ngày 1h 1 phút và 50 giây
?>

Kiểm tra tính hợp lệ của ngày tháng.

Để kiểm tra tính hợp lệ về định dạng cho ngày tháng ta dùng hàm checkdate. Kết quả đúng sẽ trả về true, sai sẽ trả về false

Cú pháp: checkdate($mouth, $day, $year);

<?php
var_dump(checkdate(02, 30, 2020)); //output: false
var_dump(checkdate(2, 23, 2020)); //output: true
?>

Kết thúc

Qua bài viết trên mình đã liệu kê một số phương pháp, một số hàm cần thiết để xử lý thời gian date/time trong PHP.

Tuỳ vào mỗi trường hợp và tính đơn giản của bài toán mà ta sẽ phải áp dụng các hàm tính toán ngày thang dạng nâng cao nói trên theo cách phù hợp nhất. Vấn đề này các bạn cần làm nhiều bài tập thì sẽ tự  lựa chọn phù hợp được.

Mỗi bài viết về kiến thức học PHP của mình đều có thể chưa hoàn toàn đầy đủ, cho nên mong các bạn hãy tra google khi tham khảo và mong bạn có thể gửi lại comment bổ sung bên dưới để mình có thể hoàn thiện lại bài viết hơn. Cảm ơn các bạn!

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

The post Bài 17: Xử lý date time ngày tháng trong PHP appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/bai-17-xu-ly-date-time-ngay-thang-trong-php/feed/ 0
Bài 16: Các hàm xử lý và làm việc với file trong PHP https://tanhongit.com/bai-16-cac-ham-xu-ly-va-lam-viec-voi-file-trong-php/ https://tanhongit.com/bai-16-cac-ham-xu-ly-va-lam-viec-voi-file-trong-php/#respond Sat, 22 Feb 2020 09:39:45 +0000 https://tanhongit.com/?p=2040 Bài viết này sẽ xoay quanh về nội dung của các hàm xử lý và làm việc với file trong PHP.  Đối với một ngôn ngữ lập trình, làm việc với file và thư mục là điều bắt buộc mà không thể tránh khỏi. Vấn đề xử lý file trong PHP rất quan trọng khi […]

The post Bài 16: Các hàm xử lý và làm việc với file trong PHP appeared first on Tân Hồng IT.

]]>
Bài viết này sẽ xoay quanh về nội dung của các hàm xử lý và làm việc với file trong PHP.  Đối với một ngôn ngữ lập trình, làm việc với file và thư mục là điều bắt buộc mà không thể tránh khỏi. Vấn đề xử lý file trong PHP rất quan trọng khi các bạn muốn làm một số chức năng như cache hay log file nhằm giúp ứng dụng web chạy nhanh hơn,…

ham xu ly file trong php
Các hàm xử lý và làm việc với file trong PHP

Việc nắm vững kiến thức về xử lý file và quyền hạn của file, thư mục khi học PHP không những giúp bạn dễ dàng lưu trữ thông tin cho website mà còn giúp bạn tăng tính bảo mật cho các file và thư mục quan trọng.

Quá trình làm việc với một file trong PHP diễn ra như sau: Mở file –> Thao tác (Đọc, Ghi ) –> Đóng file. 

Các loại File được hỗ trợ trong PHP

  • File quản lý hệ thống
  • File logs
  • Loại file.txt
  • File.log
  • File.csv
  • Dạng file hình ảnh file.gif, file.jpg …
  • File cài đặt chương trình (program.ini)

Mở file với fopen

Để mở file trong PHP chúng ta dùng hàm fopen với cú pháp:

fopen($path, $mode);

Trong đó:

  • $path là đường dẫn đến file các bạn muốn mở.
  • $mode là thuộc tính bao gồm các quyền hạn truy cập vào file.

Danh sách ký hiệu thuộc tính $mode gồm quyền hạn truy cập vào file.

Mode Chú thích
r Chỉ được đọc (Read only)
r+ Được quyền đọc và ghi (Read + write)
w Chỉ được viết (write only)
x Tạo file mới chỉ để ghi.
w+ Được quyền đọc và viết (write + read). Nếu file này tồn tại thì nội dung cũ sẽ bị xóa đi và ghi lại nội dung mới, còn nếu file chưa tồn tại thì nó tạo file mới.
a Được quyền chỉ để viết và nếu file đã tồn tại nó sẽ ghi tiếp nội dung phía dưới, ngược lại nếu file không tồn tại nó tạo file mới.
a+ Được quyền cả viết lẫn đọc. Nếu file tồn tại nó sẽ ghi tiếp nội dung phía dưới, ngược lại nếu file không tồn tại nó tạo file mới
x+ Quyền tạo file mới để đọc và ghi.
b Mở dưới dạng chế độ binary

Hàm fopen() sẽ mở một file dựa vào đường dẫn truyền vào. Nếu truyền vào một URL, hàm sẽ sẽ tìm kiếm một trình xử lý giao thức(wrapper) cho URL đó, nếu không có trính xử lý nào đươc cung cấp, nó sẽ cảnh báo cho người dùng và sau đó tiếp tục như đối với các file bình thường.

Ví dụ:

<?php
$open = @fopen('data.txt', 'r'); // dùng @ đặt trước hàm fopen để ngăn chặn thông báo lỗi khi truyền sai đường dẫn file
if (!$open)
    echo "Mở file không thành công";
else
    echo "Mở file thành công";
?>

Đọc File trong PHP

Có 3 cách đọc file thông thường trong PHP đó là đọc từng dòng, đọc từng ký tự và đọc hết file. Chúng ta sẽ đi vào từng cách đọc trên nhé!

Sử dụng hàm feof trong đọc file

Trước khi tìm hiểu các cách đọc file trong PHP mình xin giới thiệu các bạn hàm feof().

Hàm này có tác dụng đặt trong vòng lặp để sau khi đọc xong nó sẽ chuyển sang dòng mới hoặc ký tự mới đối với từng trường hợp đọc file.

Hàm feof() hữu ích khi lặp lại những dữ liệu không xác định được độ dài.

Đọc file từng dòng

Để đọc file từng dòng ta dùng hàm fgets($fp).

Ở cách này trước tiên chúng ta sẽ dùng feof để sau khi đọc xong nó sẽ chuyển sang dòng mới, và dùng hàm fgets để in ra từng dùng của file.

<?php
$fp = @fopen('demo.txt', "r");
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    echo 'Mở file thành công <br>';
    // Lặp qua từng dòng để đọc
    while(!feof($fp))
    {
        echo fgets($fp);
    }
}
?>

Ở phương pháp đọc file theo từng dòng này, ngoài cách duyệt từng dòng bằng việc dùng hàm feof trong vòng lặp while như trên thì ta còn có một cách khác đó là chuyển file sang dạng mảng với mỗi phần tử trong mảng là 1 dòng của file, sau đó chỉ cần duyệt mảng và xuất ra màn hình.

$array = @file('demo.txt'); // chuyển đổi file sang mảng
foreach ($array as $value) {
    echo $value;
}

Trong đó: Hàm file() đọc nội dung của file và đưa vào một mảng. Mỗi phần tử của mảng tương ứng với một dòng của file.

Đọc file từng ký tự

Để đọc file từng dòng ta dùng hàm fgetc($fp).

Ở cách này trước tiên chúng ta sẽ dùng feof để sau khi đọc xong nó sẽ chuyển sang dòng mới, và dùng hàm fgetc để in ra từng dùng của file.

<?php
$fp = @fopen('demo.txt', "r");
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    echo 'Mở file thành công <br>';
    // Lặp qua từng ký tự để đọc
    while(!feof($fp))
    {
        echo fgetc($fp);
    }
}
?>

Đọc hết file với fread

Thông số trong hàm fread() chứa tên của file dùng để đọc dữ liệu và thông số thứ hai là một số lượng bytes nhất định để đọc dữ liệu.

Cú pháp: fread($file,$filesize)

<?php
$fp = @fopen('demo.txt', "r");
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    echo 'Mở file thành công <br>';
    echo fread($file, filesize('demo.txt'));
} ?>

Ghi, Chèn dữ liệu vào file trong PHP

Để ghi nội dung vào file ta dùng hàm fwrite($fp, $content) trong đó $fp là đối tượng trả về lúc mở file, còn $content

Để ghi file thì bắt buộc file của bạn phải được mở ở chế độ mode có cho phép ghi file và tiếp đó dùng hàm fwrite để ghi dữ liệu.

Vì vậy mà việc ghi file sẽ phụ thuộc vào lúc bạn mở file như thế nào. Ví dụ lúc bạn mở file ghi đè thì lúc ghi file nó sẽ ghi đè, lúc bạn mở file ghi kiểu append thì lúc ghi file nó sẽ thêm xuống cuối file, nếu bạn mở file chỉ cho đọc thì bạn không thể ghi file được.

<?php
$fp = @fopen('demo.txt', "w");
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    echo 'Mở file thành công <br>';
    fwrite($fp,'Đã mở file thành công, hãy tiếp tục thao tác mới');
}
?>

Đóng File

Quá trình làm việc với một file trong PHP diễn ra như sau: Mở file –> Thao tác (Đọc, Ghi ) –> Đóng file. Quy trình này là mặc định đối với nhiều ngôn ngữ lập trình khác nhau, chúng ta luôn phải tuân thủ theo quy trình đã mở thì phải đóng.

Việc mở file để sử dụng mà không đóng file rất nguy hiểm, vì thế sau khi sử dụng xong bạn nên đóng file để an toàn hơn và thu hồi tài nguyên hệ thống.

Để đóng file ta dùng hàm fclose($fp). Trong đó $fp là đối tượng trả về lúc bạn mở file.

<?php
$fp = @fopen('demo.txt', "w");
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    echo 'Mở file thành công <br>';
    fwrite($fp,'Đã mở file thành công, hãy tiếp tục thao tác mới');
    fclose($fs); //đóng file
}
?>

Vì thế những ví dụ ở phần đọc file bạn đều phải bổ sung thêm hàm đóng file vào thì code mới đúng và hoàn chỉnh các bạn nhé!

Các hàm xử lí file khác

Kiểm tra file có tồn tại không?

Trong PHP có cung xấp cho chúng ta hàm file_exists($path) để kiểm tra sự tồn tại của file, hàm sẽ trả về true nếu file tồn tại và ngược lại false nếu không. Trong đó $path là đường dẫn đến file cần test.

Bạn cũng có thể sử dụng hàm này khi bạn tạo ra một tập tin mới và bạn muốn đảm bảo rằng các tập tin chưa từng tồn tại trên server.

<?php
if (file_exists('STDIO.txt'))
{
    echo 'File exists';
}
?>

Kiểm tra cấp quyền với file

Để kiểm tra file có được cấp quyền gì không thì chúng ta dùng hàm is_writable() . Hàm này sẽ trả về true nếu được quyền ghi và ngược lại false nếu không được quyền ghi.

<?php
$fp = @fopen('demo.txt', "w");
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    if(is_writable('demo.txt')){       
        fwrite($fp, 'Được phép ghi');}
    else{
        echo 'Không Được phép ghi';}
    fclose($fp);
}

Lấy nội dung của file hàm file_get_contents

Cú pháp: file_get_contents($path)

Trong đó $path là đường dẫn đến file, hoặc 1 đường link URL dẫn tới trang web chứa file.

echo file_get_contents('demo.txt');

Đổi tên file

Để đổi tên file ta dùng hàm rename($oldname, $newname), trong đó $oldname là đường dẫn đến file cần đổi tên, $newname là đường dẫn mới có kèm tên file cần đổi . Nếu bạn chỉ muốn đổi tên thôi thì đường dẫn của cả 2 biến giống nhau, chỉ khác nhau ở cái tên file.

Nếu tên file mới bị trùng thì file đó sẽ bị ghi đè.

rename('demo.txt', 'newdemo.txt');

Copy file

Cú pháp: copy($source, $newpath)

Trong đó $source là path file cần copy và $newpathlà path file cần di chuyển tới.

copy('demo.txt', 'newdemo.txt');

Xóa file

Ta dùng hàm unlink($path) để xóa file. Trong đó $path là đường dẫn đến file cần xóa.

<?php
if (file_exists('demo.txt'))
{
    if(unlink('demo.txt'))
        echo 'Xoá thành công';
    else
        echo 'Không thành công';
}
?>

Ghi toàn bộ nội dung chuỗi ra file

Đây là cách ghi toàn bộ một chuỗi ra file ngắn gọn (thay cho việc phải sử dụng fopen, fread, fclose).

Cú pháp: file_put_contents($path, $contents)

file_put_contents('demo.txt', 'đây là nội dung sẽ được ghi ra file');

Tạo một thư mục ( folder) mới

Cú pháp: mkdir($path)

Trong đó $path là đường dẫn đến folder cần tạo.

Ví dụ:

mkdir('webdevelopment/php/phpcanban');
Lưu ý: tên folder cuối cùng lằn trong link chính là tên folder bạn cần tạo và tất cả các folder trước nó bạn chắc chắn là phải có, nếu không sẽ bị lỗi.
Từ ví dụ trên ta sẽ nhận ra rằng ta đã phải có folder webdevelopment và trong nó là folder con có tên là php thì mới tạo thêm được.

Kiểm tra sự tồn tại đường dẫn thư mục

Cú pháp kiểm tra sự tồn tại của thư mục trong php là is_dir(path)

if(is_dir('phpcanban')){
    echo 'Folder này hiện đang tồn Tại';
}

Kết thúc

Qua bài viết trên mình đã nói qua về những hàm cần thiết về xử lý file cần biết trong PHP, Các bạn hãy thao khảo tìm mốt số bài tập thực hành để nâng cao hiểu biết của bản thân hơn nhé!

Ngoài ra còn rất nhiều hàm xử lý về file khác mà mình chưa nói tới, các bạn có thể tham khảo tại đây.

Bài viết tiếp theo mình sẽ sơ lược qua về vấn đề xử lý thời gian, ngày tháng trong PHP các bạn hãy đón đọc nhé!

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

The post Bài 16: Các hàm xử lý và làm việc với file trong PHP appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/bai-16-cac-ham-xu-ly-va-lam-viec-voi-file-trong-php/feed/ 0
Vai trò Apache và PHP Hoạt Động Cùng Nhau Như Thế Nào https://tanhongit.com/vai-tro-apache-va-php-hoat-dong-cung-nhau-nhu-the-nao/ https://tanhongit.com/vai-tro-apache-va-php-hoat-dong-cung-nhau-nhu-the-nao/#respond Wed, 19 Feb 2020 12:35:47 +0000 https://tanhongit.com/?p=2009 Hầu hết chúng ta đều biết Apache là một phần mềm web server trong khi đó PHP là một ngôn ngữ kịch bản scripting language được sử dụng phổ biến trên server cùng với Apache. Tuy nhiên chính xác thì vai trò cũng như chức năng của Apache và PHP cụ thể như thế nào và chuyện gì xảy […]

The post Vai trò Apache và PHP Hoạt Động Cùng Nhau Như Thế Nào appeared first on Tân Hồng IT.

]]>
Hầu hết chúng ta đều biết Apache là một phần mềm web server trong khi đó PHP là một ngôn ngữ kịch bản scripting language được sử dụng phổ biến trên server cùng với Apache. Tuy nhiên chính xác thì vai trò cũng như chức năng của Apache và PHP cụ thể như thế nào và chuyện gì xảy ra nếu chỉ server chỉ được cài đặt Apache hoặc PHP?

apache and php
Apache và PHP Hoạt Động Cùng Nhau Như Thế Nào

Trước tiên bạn cần nắm rõ được một request khi gửi tới server sẽ được xử lý như thế nào.

Vai Trò Của Apache

Khi một HTTP request được gửi tới server máy chủ thì nó sẽ được xử lý trước tiên bởi một phần mềm được gọi là HTTP web server (hay thường gọi vắn tắt là phần mềm web server hoặc web server) được cài đặt trên server. Hiện nay Apache là một trong những phần mềm web server được sử dụng phổ biến trên thế giới tuy nhiên không phải là phần mềm web server duy nhất, ngoài Apache chúng ta còn có thể sử dụng phần mềm web server khác cũng khá phổ biến có tên là NGINX (đọc là en-zin-iks).

Ví dụ sử dụng client (chẳng hạn như trình duyệt web) chúng ta thực hiện gửi một request tới server với địa chỉ http://localhost/index.html, máy chủ khi nhận được request sẽ chuyển request này cho phần mềm web server để xử lý (trường hợp của chúng ta là Apache). Apache sẽ tìm kiếm tập tin index.html trong thư mục gốc và trả về cho client. Trường hợp không tìm thấy tập tin index.html Apache sẽ trả về lỗi 404 not found.

vai trò của apache

Tuy nhiên như bạn biết HTML là ngôn ngữ đánh dấu (markup language) và nó không thể thực hiện được các công việc như truy cập tới cơ sở dữ liệu, lưu trữ session, xử lý dữ liệu form… Để làm các công việc này chúng ta cần tới ngôn ngữ scripting như PHP (hoặc Ruby, Java…).

Vai Trò Của PHP

PHP là ngôn ngữ lập trình kịch bản giúp thực hiện các tác vụ mạnh mẽ như đã đề cập ở trên. Tuy nhiên PHP lại không phải là một phần mềm web server, nói cách khác việc xử lý HTTP request gửi tới server cần được xử lý bởi web server (Apache) như chúng ta đã tìm hiểu ở trên.

Để PHP có thể tham gia vào quá trình xử lý request của web server (Apache) thì chúng ta sẽ cần tích hợp một thư viện có tên là mô-đun PHP mod_php vào trong Apache web server.

Sau khi Apahce được tích hợp và kích hoạt mod_php thì lúc này khi server nhận được một request gửi tới từ phía client với địa chỉ URL là http://localhost/index.php nó vẫn sẽ chuyển request này cho Apache để xử lý như thường lệ. Tuy nhiên lúc này Apache nhận thấy tập tin index.php là một tập tin PHP và do đó nó sẽ thông qua mod_php để nhờ PHP xử lý tập tin index.php này và trả về kết quả. Sau khi nhận được kết quả xử lý từ PHP, Apache lúc này mới chuyển trả kết quả về cho client.

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

The post Vai trò Apache và PHP Hoạt Động Cùng Nhau Như Thế Nào appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/vai-tro-apache-va-php-hoat-dong-cung-nhau-nhu-the-nao/feed/ 0
Mô hình Client-Server là gì và cách hoạt động Client-Server https://tanhongit.com/mo-hinh-client-server-la-gi-va-cach-hoat-dong-client-server/ https://tanhongit.com/mo-hinh-client-server-la-gi-va-cach-hoat-dong-client-server/#respond Wed, 19 Feb 2020 12:22:49 +0000 https://tanhongit.com/?p=2004 Mô hình client-server là một mô hình nổi tiếng trong mạng máy tính, được áp dụng rất rộng rãi và là mô hình của mọi trang web hiện có. Ý tưởng của mô hình này là máy con (đóng vài trò là máy khách) gửi một yêu cầu (request) để máy chủ (đóng vai trò […]

The post Mô hình Client-Server là gì và cách hoạt động Client-Server appeared first on Tân Hồng IT.

]]>
Mô hình client-server là một mô hình nổi tiếng trong mạng máy tính, được áp dụng rất rộng rãi và là mô hình của mọi trang web hiện có. Ý tưởng của mô hình này là máy con (đóng vài trò là máy khách) gửi một yêu cầu (request) để máy chủ (đóng vai trò người cung ứng dịch vụ), máy chủ sẽ xử lý và trả kết quả về cho máy khách.

Trong mô hình này, chương trình ứng dụng được chia thành 2 thành phần: Server Client. Client hay còn gọi là máy khách, nó bao gồm máy tính và các thiết bị điện tử nói chung. Server hay còn gọi là máy chủ, là nơi cài đặt các chương trình dịch vụ và lưu trữ tài nguyên.

mo hinh client server
Mô hình client – server

Việc yêu cầu của máy khách, đáp ứng, xử lý, và phản hồi của máy chủ tạo thành một dịch vụ. Dịch vụ này hoạt động trên nền web nên nó được gọi là dịch vụ web (hay web service).

Ngoài ra, việc giao tiếp giữa Client với Server phải dựa trên các giao thức chuẩn. Các giao thức chuẩn được sử dụng phổ biến nhất hiện nay là : giao thức TCP/IP, giao thức SNA của IBM, OSI, ISDN, X.25 hay giao thức LAN-to-LAN NetBIOS.

Vì sao các Website thường sử dụng mô hình client-server

  • Dữ liệu và tài nguyên được tập trung lại và tăng tính toàn vẹn của các dữ liệu.
  • Sự linh động trong việc mở rộng được hệ thống mạng.
  • Không phụ thuộc vào cùng một nền tảng, chỉ cần chung một định dạng giao tiếp (protocol) là có thể hoạt động được.

Chỉ có điều nhược điểm của mô hình này là tính an toàn và bảo mật các thông tin trên mạng. Do phải trao đổi các dữ liệu giữa hai máy ở hai khu vực khác nhau nên dễ dàng xảy ra hiện tượng thông tin trên mạng bị mất bí mật và từ đó vai trò của quản trị mạng trở nên quan trọng lên rất nhiều.

Bảng so sánh mô hình client server với các mô hình khác

Mô hình mạng / tiêu chí đánh giá Client Server Peer-to-Peer Hybrid
Khả năng bảo mật thông tin và độ an toàn Khả năng bảo mật và an toàn thông tin cao. Có thể điều chỉnh quyền truy cập thông tin. Khả năng bảo mật và an toàn thông tin kém. Phần lớn phụ thuộc vào mức độ quyền được chia sẻ. Khả năng bảo mật và an toàn thông tin cao. Có thể điều chỉnh quyền truy cập thông tin.
Khả năng cài đặt Cài đặt khá khó khăn. Cài dặt dễ dàng. Cài đặt khá khó khăn.
Yêu cầu về phần cứng và phần mềm Bao gồm:+ Máy chủ+ Hệ điều hành

+ Phần cứng

Chỉ cần ít phần cứng bổ sung. Ngoài ra không cần máy chủ và hệ điều hành như 2 mô hình trên. Bao gồm:+ Máy chủ+ Hệ điều hành

+ Phần cứng

Yêu cầu về quản trị mạng Cần phải có quản trị mạng Không cần quản trị mạng Cần phải có quản trị mạng
Có khả năng xử lý và lưu trữ tập trung không? Không Không
Chi phí cài đặt Chi phí cao Chi phí thấp Chi phí thấp

Cách thức mô hình client server hoạt động như thế nào ?

Quy trình hoạt đông được chia làm 2 bước:

Client

Các máy trạm trong mô hình này gọi là máy khách (client). Đây là nơi tiếp nhận những thao tác yêu cầu từ người dùng và sau đógởi các yêu cầu xử lý về máy chủ (server).

Phần phía Client là nơi trung gian tổ chức giao tiếp giữa người dùng với môi trường làm việc trên máy khách (client) và với phía Server. Sau khi tiếp nhận yêu cầu của người dùng, máy khách client sẽ thành lập các query string để gửi về phía Server.

Server

Phần phía Server quản lý các giao tiếp môi trường giữa Server và với các Client, tiếp nhận các yêu cầu dưới dạng các xâu ký tự (query string). Sau khi phân tích các query string được request từ máy khách client, phần phía Server sẽ xử lý dữ liệu và gửi kết quả trả lời về phía các Client.

Sau đó sẽ hiện lên màn hình đến cho người dùng.

Ưu điểm mô hình client-server là gì?

Ưu điểm của mô hình client server là với mô hình client server thì mọi thứ dường như đều nằm trên bàn của người sử dụng, nó có thể truy cập dữ liệu từ xa (bao gồm các công việc như gửi và nhận file, tìm kiếm thông tin,…) với nhiều dịch vụ đa dạng mà mô hình cũ không thể làm được.

Mô hình client-server cung cấp một nền tảng lý tưởng cho phép tích hợp các kỹ thuật hiện đại như mô hình thiết kế hướng đối tượng, hệ chuyên gia, hệ thông tin địa lý (GIS)…

Nhược điểm mô hình client server là gì?

Như đã nói ở các phần trên, nhược điểm duy nhất của mô hình này là tính an toàn và bảo mật các thông tin trên mạng. Do phải trao đổi các dữ liệu giữa hai máy ở hai khu vực khác nhau ở xa nhau nên dễ dàng xảy ra hiện tượng thông không được an toàn.

Một số ví dụ về mô hình client server

Mail Server

Ở bên phía Client, người dùng soạn thảo Email và sẽ gửi đến Mail Server, phía bên Mail Server sẽ tiếp nhận và lưu trữ, tìm kiếm địa chỉ của mail được gửi đến và gửi đi.

Web Server

Lưu trữ các trang Web. khi người dùng ở phía máy Client nhập địa chỉ của trang web, Client sẽ gửi yêu cầu đến máy chủ Web và máy chủ Web sẽ gửi toàn bộ nội dung của trang web về cho phía Client.

File Server

Lưu trữ các tập tin. Nhận và truyền đi các tập tin về phía Client , người dùng có thể download – upload các tập tin lên Server qua Web browser hoặc là giao thức FTP

Các cấu hình cơ sở dữ liệu Client/Server

Nhìn chung mọi ứng dụng cơ sở dữ liệu đều bao gồm các phần:

  • Thành phần xử lý ứng dụng (Application processing components)
  • Thành phần phần mềm cơ sở dữ liệu (Database software componets)
  • Bản thân cơ sở dữ liệu (The database itself)

Các mô hình về xử lý cơ sở dữ liệu khác nhau là bởi các trường hợp của 3 loại thành phần nói trên định vị ở đâu. Bài viết này này xin giới thiệu 5 mô hình kiến trúc dựa trên cấu hình phân tán về truy nhập dữ liệu của hệ thống máy tính Client/Server.

  1. Mô hình cơ sở dữ liệu tập trung (Centralized database model)
  2. Mô hình cơ sở dữ liệu theo kiểu file – server (File – server database model)
  3. Mô hình xử lý từng phần cơ sở dữ liệu (Database extract processing model)
  4. Mô hình cơ sở dữ liệu Client/Server (Client/Server database model)
  5. Mô hình cơ sở dữ liệu phân tán (Distributed database model)

Ngoài ra ta còn có một mô hình ngược lại là mô hình master-slaver, trong đó máy chủ (đóng vai trò ông chủ) sẽ gửi dữ liệu đến máy con (đóng vai trò nô lệ) bất kể máy con có cần hay không.

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

The post Mô hình Client-Server là gì và cách hoạt động Client-Server appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/mo-hinh-client-server-la-gi-va-cach-hoat-dong-client-server/feed/ 0
Bài 15: Session trong PHP https://tanhongit.com/bai-15-session-trong-php/ https://tanhongit.com/bai-15-session-trong-php/#respond Tue, 18 Feb 2020 17:21:21 +0000 https://tanhongit.com/?p=1985 Ở bài 14 mình đã cho các bạn biết về khái niệm và cách thiết lập cookie trong PHP, tiếp tục series học PHP căn bản, sang bài này mình sẽ giới thiệu Session trong PHP là gì, hiểu nó và cách sử dụng nó như thế nào! Session là một biến được sử dụng […]

The post Bài 15: Session trong PHP appeared first on Tân Hồng IT.

]]>
bài 14 mình đã cho các bạn biết về khái niệm và cách thiết lập cookie trong PHP, tiếp tục series học PHP căn bản, sang bài này mình sẽ giới thiệu Session trong PHP là gì, hiểu nó và cách sử dụng nó như thế nào!

Session là một biến được sử dụng để lưu lại dữ liệu của người sử dụng website hoặc là lưu trữ tùy chọn cấu hình hệ thống cho người dùng. Không giống với cookie, biến session được lưu trên một tập tin trên máy chủ.

session trong php
Bài 15: Session trong PHP

Các ứng dụng thường dùng đối với Session

  • Session dùng theo dõi và kết nối giữa các phiên làm việc của người dùng
  • Session dùng để tạo các ứng dụng giỏ hàng, đăng nhập,…
  • Đếm sngười dùng đang online,…
  • Bạn muốn truyền giá trị từ trang này sang trang khác.
  • Thay thế cho cookie nếu trình duyệt đó không hỗ trợ cookies.

Quy cách mà Session hoạt động

Khi một session bắt đầu, những điều sau sẽ xảy ra:

  • Đầu tiên, PHP tạo một định danh duy nhất cho session cụ thể đó, định danh này là chuỗi kí tự ngẫu nhiên của 32 số hexa, như 3c7foj34c3jj973hjkop2fc937e3443.
  • Một cookie được gọi là PHPSESSID sẽ được gửi tự động đến máy tính người dùng để lưu trữ chuỗi định danh session duy nhất ở trên.
  • Một file được tạo tự động trên Server trong thư mục tạm thời đã được chỉ định và nó mang tên của định danh duy nhất và được bắt đầu bằng sess_. Ví dụ như: sess_3c7foj34c3jj973hjkop2fc937e3443.

Khi PHP script muốn lấy giá trị từ một biến session, PHP tự động lấy chuỗi định danh session duy nhất này từ PHPSESSID cookie, sau đó tìm file mang tên đó trong thư mục tạm thời của nó, một xác thực có thể được hoàn thành bằng việc so sánh các giá trị đó.

Một session kết thúc khi người dùng tắt trình duyệt hoặc sau khi rời khỏi site này, Server sẽ chấm dứt session sau một thời gian đã định trước, thường là 30 phút.

Đăng ký bắt đầu tạo một session

Trước khi bạn sử dụng session bạn phải khai báo cho PHP biết bằng cách đặt dòng lệnh session_start() phía trên đầu mỗi file. Nếu bạn dùng nhiều file include lẫn nhau thì đặt nó ở file chính.

Đầu tiên hàm này kiểm tra một session đã được bắt đầu hay chưa, nếu chưa thì nó sẽ bắt đầu một session. Luôn nhớ rằng lời gọi hàm session_start() này được đề nghị đặt ở đầu của mỗi file (trước các thẻ html).

Các biến session được lưu trữ trong mảng liên hợp là $_SESSION[”]. Các biến này có thể được truy cập trong suốt vòng đời của một phiên session.

<?php
// bắt đầu session (luôn đặt ở đầu file)
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Tạo biến session
$_SESSION["user_id"] = "123456";
$_SESSION["username"] = "tanhongit";
echo "Các biến session đã được tạo.";
?>
</body>
</html>
<?php	//Start the session	
session_start();	
?>	
<!DOCTYPE html>	
<html>	
<body>	
<?php	
//Set session variables	
$_SESSION["favcolor"] = "green";	
?>

Lấy và đọc giá trị của Session trong PHP

Bạn hãy tạo 2 file có nội dung code bên dưới. Bạn hãy chạy làn lượt từng file trên trình duyệt và xem kết quả nhé!

Lưu ý rằng các biến session không được chuyển riêng lẻ đến từng trang mới, thay vào đó chúng được truy cập từ session mà chúng ta khai báo ở đầu mỗi trang (session_start()) và các giá trị biến session được lưu trữ trong biến toàn cầu $_SESSION:

<?php
// bắt đầu session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
 
<?php
// Tạo biến session
$_SESSION["user_id"] = "123456";
$_SESSION["username"] = "tanhongit";
echo "Các biến session đã được tạo.";
?>
</body>
</html>
<?php
// bắt đầu session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
    <?php
    // hiển thị các biến session được tạo ở file session_demo1.php
    echo "user_id là: " . $_SESSION["user_id"] . "<br>";
    echo "username là: " . $_SESSION["username"];
    ?>
</body>
</html>

kết quả bạn sẽ thấy sau khi chạy lần lượt 2 file là thông tin của session được lưu lại:

user_id là: 123456
username là: tanhongit

Ngoài ra để tránh gặp lỗi, các bạn hãy nhớ luôn sử dụng hàm isset() để kiểm tra xem nó có tồn tại hay không rồi hẵn láy nhé! Ví dụ về hàm isset() mình đã có làm nhiều trong các bài viết trước rồi, và mình cũng sẽ có viết riêng 1 bài nói về hàm isset() cho các bạn tham khảo nhé!

Để in tất cả các biến session, sử dụng hàm print_r():

print_r($_SESSION);

Chỉnh sửa, thay đổi giá trị của biến Session trong PHP

Để thay đổi giá trị của một session, ta chỉ cần thiết lập giá trị mới đè lên giá trị cũ của session đó.

<?php
// bắt đầu session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
    <?php    
    $_SESSION["username"] = "tanhongitcom";
    print_r($_SESSION);
    ?>
</body>
</html>

Kết quả: Array ( [user_id] => 123456 [username] => tanhongitcom )

Qua ví dụ dưới đây sẽ cho các bạn thấy rõ hơn về sự thay đổi giá trị của Session.

Ví dụ: Xuất ra số lần truy cập vào trang web thông qua session

<?php
session_start();

if (isset($_SESSION['count'])) {
    $_SESSION['count'] += 1;
} else {
    $_SESSION['count'] = 1;
}
$mess = "Bạn đã truy cập trang này " .  $_SESSION['count'] . " lần trong session này.";
?>
<html>
<body>
    <?php echo ($mess); ?>
</body>
</html>

Sau khi bắt đầu 1 session, ta tạo 1 biến session có tên là count, tiếp tục với biểu thức điều kiện if sẽ kiểm tra số lần load vào trang này và xuất ra tổng số lần. Bạn thử load lại nhiều lần sẽ thấy giá trị của nó thay đổi lần lượt tăng thêm 1.

Các xoá, huỷ một session trong PHP

  • Xóa tất cả biến session đã tạo ta sử dựng hàm session_unset()
  • Xóa luôn toàn bộ session, ta sử dụng hàm session_destroy()
  • Hoặc sử dụng hàm unset() để xóa một biến.

Trong đó hàm unset() dùng để giải phóng một biến ra khỏi bộ nhớ.

// Xóa session username
unset($_SESSION['username']);
  
// Xóa hết session
session_destroy();

BÀI TẬP

  1. Xây dựng ứng dụng lưu phiên đăng nhập người dùng
  2. Xây dựng ứng dụng lưu thông tin giỏ hàng

Kết thúc

Vậy là qua bài viết trên mình đã giới thiệu cho các bạn về session, qua 2 bài vừa rồi nói về cookie, session là 2 khái niệm bạn sẽ phải đụng chạm rất nhiều vào các ứng dụng, các dự án sau này. Các bạn hãy áp dụng thật nhiều để nắm rõ cách sử dụng và hoạt động của nó nhé! Qua bài viết tiếp theo chúng ta sẽ qua một khái niệm mới về file và các hàm xử lý file trong PHP.

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

The post Bài 15: Session trong PHP appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/bai-15-session-trong-php/feed/ 0