1. Clean code - mã nguồn tốt dễ đọc, rõ ràng,đơn giản, dễ hiểu, dễ cải tiến
1.1. refactoring - Cách chúng ta triển khai
1.1.1. tái cấu trúc mã nguồn không gây ảnh hưởng cho mã nguồn
1.1.1.1. tách biến
1.1.1.1.1. tạo ra nhiều biến từ một biến ban đầu, để đoạn code dễ hiểu
1.1.1.2. tách phương thức
1.1.1.2.1. tạo ra thêm phương thức để đoạn code tường minh hơn
1.1.1.3. tách hằng
1.1.1.3.1. gắn 1 biến vào giá trị của hằng làm rõ nghĩa của hằng
1.1.1.4. đổi tên biến, hằng
1.2. Coding Conventions-Các quy tắc
1.2.1. Quy tắc đặt tên biến
1.2.1.1. camelCase,đặt rõ ràng có nghĩa
1.2.2. Quy tắc đặt tên hàm
1.2.2.1. đặt tên theo động từ
1.2.2.1.1. camelCase
1.2.3. Quy tắc đặt tên lớp
1.2.3.1. là danh từ
1.2.3.1.1. theo CamelCase
2. PHP Datastructures - lưu trữ dữ liệu, tổ chức dữ liệu có hệ thống
2.1. Doubly Linked List (Danh sách Liên kết Đôi) - danh sách các node được liên kết nhau theo cả hai hướng
2.1.1. SplStack
2.1.1.1. triển khai bằng việc sử dụng liên kết đôi
2.1.2. SplQueue
2.2. Heaps-gần giống tree, trong đó mỗi node sẽ có giá trị lớn hơn hoặc bằng các node con của nó
2.2.1. SplHeap
2.2.1.1. SplMaxHeap
2.2.1.2. SplMinHeap
2.2.2. SplPritorityQueue
2.3. Arrays-lưu trữ dữ liệu theo hình thức liên kết nhau, các phần tử được truy cập dựa vào chỉ số của chúng
2.3.1. SplFixedArray
2.4. Map - một cấu trúc dữ liêu trong đó các phần tử được sắp xếp theo cặp (key- value)
2.4.1. Lớp SplObjectStorage
3. Thuật toán tìm kiếm
3.1. tuyến tính - tìm kiếm bằng cách so sánh giá trị cần tìm với từng phần tử trong danh sách cần tìm
3.2. nhị phân - khi danh sách được sắp xếp theo thứ tự từ nhỏ đến lớn, so sánh giá trị cần tìm với giá trị ở giữa, từ đó xác định được khoảng của giá trị cần tìm, lặp lại trong khoảng đó
4. Exception - khi luồng thực thi của ứng dụng không được như mong muốn thì đó là ngoại lệ, ta phải xử lý ngoại lệ
4.1. finally-Khối lệnh finally có thể đi cùng khối lệnh try/catch. Các câu lệnh bên trong khối finally sẽ luôn luôn được thực thi, kể cả trong trường hợp có xảy ra ngoại lệ hay không.
4.2. Lớp Exception dựng sẵn
4.2.1. throw - đây là cách bạn kích hoạt một ngoại lệ, mỗi throw phải có một catch
4.2.2. catch - nhận một ngoại lệ và tạo một đối tượng bao gồm một thông tin ngoại lệ xuất hiện trong khối try
4.2.3. Try - tất cả những mã lệnh có khả năng phát sinh ngoại lệ, đặt trong khối try, nếu một ngoại lệ không được kích hoạt mã nguồn sẽ hoạt động bình thường. Tuy nhiên khi được kích hoạt hay ném ra
4.3. Exception tự tạo - lớp kế thừa của lớp Exception dựng sẵn
5. String - Regex
5.1. String - dữ liệu kiểu chuỗi
5.1.1. chuỗi không chứa ký tự là chuỗi rỗng
5.1.2. khi biến chuỗi để trong dấu nháy đơn nó sẽ không hiển thị giá trị
5.1.3. nối chuỗi (.)
5.1.4. khi đặt cặp dấu nháy đơn bên trong sát cặp nháy đơn ngoài sẽ lỗi
5.1.5. môt chuỗi được coi như 1 mảng với mỗi ký tự tương ứng với một vị trí index
5.1.6. các hàm xử lý chuỗi
5.1.6.1. strlen - trả về độ dài
5.1.6.2. strtolower- chuyển thành chữ thường
5.1.6.3. strtoupper chuyển thành chữ hoa
5.1.6.4. strrev - đảo ngược chuỗi
5.1.6.5. strpos($string,$text) - tìm kiếm text trong string
5.1.6.6. substr(string,start,length) - cắt chuỗi từ vị trí start, độ dài length, - 1 cắt ngược lại
5.1.6.7. str_word_count - trả về số tuef của chuỗi
5.1.6.8. trim($str,$charlist) - loại bỏ khoảng trắng, cắt bỏ ký tự từ ngoài vào trong
5.1.6.9. str_replace($find,$replace,$str) - thay thế phần tử $str bằng $replace
5.2. regex - biểu thức chính quy - là thuật toán khớp mẫu
5.2.1. ứng dụng xác đầu vào khi tạo email, password
5.2.2. các hàm thao tác với regex
5.2.2.1. 1. Hàm preg_match(): kiểm tra khớp hay không khớp
5.2.2.1.1. preg_match ( $pattern , $subject, &$matches) tham số đầu là biểu thức ta xây dựng, tham số thứ 2 biểu thức ta kiểm tra, tham số thứ 3 là kết quả
5.2.2.2. 2. Hàm preg_match_all() trả về toàn bộ giá trị , preg_match () kiểm tra giá trị đầu tiên
5.2.2.3. 3. Hàm preg_split(): chia nhỏ chuỗi thành những mảng con
5.2.2.4. 4. Hàm preg_repalce():Hàm preg_replace dùng để tìm kiếm và thay thế một chuỗi nào đó khớp với đoạn Regular Expression truyền vào.
5.2.2.4.1. cú pháp :preg_replace($pattern, $replacement,$subject) trong đó $pattern để tìm kiếm, $replacement để thay thế, $subject là chuỗi đầu vào
6. Cơ sở dữ liệu- tập hợp các dữ liệu có tổ chức
6.1. CSDL Phân cấp
6.2. CSDL mạng
6.3. CSDL đồ thị
6.4. CSDL quan hệ - được xây dựng trên mô hình dữ liệu quan hệ - dữ liệu được tổ chức theo bảng , mỗi bảng là 1 thực thể
6.5. CSDL đối tượng
6.6. CSDL tài liệu
6.7. Hệ quản trị CSDL là ứng dụng máy tính sử dụng để quản lý CSDL
6.7.1. Chức năng
6.7.1.1. Định nghĩa dữ liệu
6.7.1.2. Cập nhật dữ liệu
6.7.1.3. Truy vấn
6.7.1.4. Quản lý
6.7.2. Một số DBMS
6.7.2.1. Mysql
6.7.2.1.1. SQL - ngôn ngữ truy vấn có cấu trúc
6.7.2.1.2. Thiết kế CSDL
6.7.2.2. mongoDB
6.7.2.3. MariaDB
6.7.2.4. SQL server
7. PHP- Ngôn ngữ phía server
7.1. Tổng quan
7.1.1. Web
7.1.1.1. Không gian trên internet - tài liệu chia sẻ dưới dạng URL
7.1.2. Website - tập hợp trang tài liệu tài nguyên liên quan đến nhau, truy cập thông qua một tên miền
7.1.2.1. static web
7.1.2.1.1. trang web nội dung tĩnh không thay đổi được - được viết bằng CSS và JavaScript
7.1.2.2. dynamic web
7.1.2.2.1. web động nội dung thay đổi tùy theo thời gian - được viết bằng JAVA,PHP,Python,C#
7.1.3. Giao Thức - Phương thức giao tiếp truyền tải thông tin
7.1.3.1. HTTP - Giao thức truyền tải siêu văn bản - truyền tải văn bản, media,
7.1.3.1.1. Tính năng
7.1.4. Client - Server
7.1.5. Mô hình
7.2. Biến - Giá trị có thể thay đổi
7.2.1. Cục bộ - khai báo trong hàm,phạm vi trong các hàm
7.2.2. Toàn cục - truy cập ở bất cứ nơi nào
7.3. hằng
7.3.1. là giá trị không thay đổi
7.4. Kiểu dữ liệu
7.4.1. int - kiểu nguyên
7.4.2. boolean
7.4.2.1. true - false
7.4.3. float - double số thực
7.4.4. string - tập hợp ký tự
7.4.5. mảng - array
7.4.6. NULL
7.4.7. kiểu đối tượng
7.5. Toán tử - phép tính trên biến và giá trị
7.5.1. Toán tử số học
7.5.2. Toán tử gán - sử dụng để gán giá trị
7.5.3. so sánh
7.5.3.1. == bằng
7.5.3.2. === giống hệt
7.5.3.3. !=,<> không bằng
7.5.3.4. !== không giống hệt
7.5.3.5. > lớn hơn
7.5.3.6. < nhỏ hơn
7.5.3.7. >= lớn hơn hoặc bằng
7.5.3.8. <= nhỏ hơn hoặc bằng
7.5.4. Tăng giảm
7.5.4.1. ++$x :tăng trước
7.5.4.2. $x++ tăng sau
7.5.4.3. --$x giảm trước
7.5.4.4. $x-- giảm sau
7.5.5. logic
7.5.5.1. and - đúng nếu cả 2 đúng
7.5.5.2. or - đúng nếu 1 trong 2 đúng
7.5.5.3. && giốn and
7.5.5.4. || giống or
7.5.5.5. ! nếu $x sai
7.5.6. toán tử chuỗi
7.5.6.1. . Nối
7.5.6.2. .= nối thêm
7.5.7. toán tử mảng , so sánh các mảng
7.5.7.1. + hợp hai mảng
7.5.7.2. == trả về true nếu giống nhau về key/value
7.5.7.3. === giống hệt nhau
7.5.7.4. != không bằng
7.5.7.5. !== không giống như nhau
7.6. Câu lệnh điều kiện - thực hiện các hành động khác nhau trên điều kiện khác nhau
7.6.1. if - thực hiện nếu đúng
7.6.2. if - else : thực hiện đoạn mã với hai điều kiện đúng và không đúng
7.6.3. if else if else: thực hiện đoạn mã trên 2 điều kiện
7.6.4. switch - case: so sánh với 1 list danh sách với điều kiện =
7.7. Vòng lặp - là đoạn code lặp lại số lần nhất định để thỏa mãn điều kiện yêu cầu
7.7.1. while - lặp đến khi điều kiện còn đúng(không rõ số lần lặp )
7.7.2. do while - luôn thực thi 1 lần lặp sau đó kiểm tra điều kiện lặp
7.7.3. for - vòng lặp biết trước số lần lặp
7.7.3.1. foreach chỉ dùng cho mảng và đối tượng,
7.8. Hàm - là tập hợp khối lệnh để thực hiện 1 việc
7.8.1. Hàm dựng sẵn - 1000 hàm có sẵn
7.8.2. Hàm tự định nghĩa
7.9. Mảng - là tập hợp phần tử , mảng trong php cấu trúc key - value
7.9.1. Mảng tuần tự - key sắp xếp theo thứ tự
7.9.2. Mảng bất tuần tự - key không sắp xếp theo thứ tự
7.9.3. Mảng đa chiều - 1 mảng chưá mảng con bên trong
7.10. OOP
7.10.1. Thuộc tính - thông tin đặc điểm của đối tượng
7.10.2. Phương thức - hành động mà đối tượng thực hiện
7.10.3. 4 tính chất
7.10.3.1. Trừu Tượng - bỏ qua phương thức thuộc tính không cần thiết hướng tới phương thức thuộc tính cốt lõi
7.10.3.1.1. Abstract class - là lớp chứa phương thức trừu tượng và không trừu tượng, phương thức trừu tượng không có tham số truyền vào, lớp con kế thừa phải duy trì mức độ truy cập, lớp trừu tượng không tạo được đối tượng
7.10.3.2. Đa hình - những class khác nhau có phương thức giống nhau
7.10.3.2.1. Interface - không phải là một lớp, các phương thức trong interface là trừu tượng, trong interface chỉ có những thuộc tính cố định, interface không có hàm tạo,chúng ta không khởi tạo đối tượng với interface mà triển khai chúng.
7.10.3.2.2. Overload - 1 lớp có vài phương thức giống nhau nhưng khác nhau về số lượng tham số truyền vào
7.10.3.3. Kế thừa - lớp con kế thừa toàn bộ phương thức, thuộc tính của lớp cha
7.10.3.3.1. Override - cho phép lớp con viết lại phương thức của lớp cha
7.10.3.4. Bao gói - dữ liệu được bảo mật
7.10.3.4.1. Access modifier - mức độ truy cập của phương thức và thuộc tính
7.10.4. static method - không cần khởi tạo đối tượng nhưng vẫn sử dụng được phương thức của lớp - tham chiếu đến thuộc tính hiện tại
7.10.5. static property - thuộc tính tĩnh mang tính toàn cục,khi khai báo không khai báo thuộc tính mặc định là thuộc tính tĩnh
7.10.6. namespace- là cách đóng gói file php, sử dụng để tránh trùng lặp trong các lớp và hàm khác nhau
7.10.7. self method - tham chiếu tới giá trị của thuộc tính cha thay vì tham chiếu đến thuộc tính hiện tại
8. Cấu trúc dữ liệu - lưu trữ dữ liệu dưới dạng cấu trúc
8.1. Set (Tập hợp): Nhóm các phần tử không trùng nhau
8.2. List (Danh sách): Nhóm các phần tử có thể trùng nhau
8.2.1. Array list
8.2.1.1. Sử dụng mảng để lưu trữ dữ liệu
8.2.1.1.1. truy xuất nhanh do các phần tử sắp xếp bằng index
8.2.2. Linked list
8.2.2.1. Các phần tử liên kết thông qua tham chiếu tuyến tính
8.2.2.1.1. truy xuất chậm do phải duyệt lần lượt để tìm
8.3. Stack: Nhóm các phần tử theo trật tự first-in/last-out (vào trước/ra sau)
8.3.1. ứng dụng việc sắp xếp để lấy phần tử phía sau
8.4. Queue: Nhóm các phần tử theo trật tự first-in/first-out (vào trước/ra trước)
8.4.1. ứng dụng xếp hàng bệnh viện, xếp hàng siêu thị
8.5. Map (Bản đồ): Lưu trữ các cặp key/value
8.6. Tree (Cây): Lưu trữ các phần tử theo mối quan hệ cha-con
8.6.1. ứng dụng để lưu trữ thông tin dưới dạng một hệ thống phân cấp tự nhiên, như trong công ty