ICTsharing - Blog chia sẻ kiến thức về ICT: php

Hot

Post Top Ad

Hiển thị các bài đăng có nhãn php. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn php. Hiển thị tất cả bài đăng

Thứ Năm, 26 tháng 12, 2019

Chia Sẻ Khóa Học Tạo Hệ Thống POS – Quản Lý Bán Hàng Và Hàng Tồn Kho Với PHP 7 & adminLTE [LINK GOOGLE DRIVE ONLINE]

14:37 0

Tìm hiểu cách tạo hệ thống POS với quản lý kho và thanh toán bằng PHP 7 và AdminLTE.

Bạn sẽ học được gì:

  • + Bạn sẽ học cách tạo một ứng dụng web được thiết kế bằng ngôn ngữ lập trình PHP 7 với template AdminLTE.
  • + Bạn sẽ học cách tạo ra một số tài nguyên cho phép cung cấp các đặc điểm hữu ích cho bất kỳ công ty nào muốn tạo điểm bán hàng.
  • + Bạn sẽ học cách tạo quản lý hàng tồn kho, quản lý bán hàng với các phương thức thanh toán khác nhau, in hóa đơn, báo cáo bán hàng, báo cáo khách hàng tốt nhất, người bán và sản phẩm.
  • + Bạn sẽ học cách kết hợp nhiều công cụ và plugin với adminLTE template như: biểu đồ, bảng và thống kê làm việc với lập trình hướng đối tượng và mẫu Model-view-controller.

Trong khóa học này, bạn sẽ tìm hiểu cách tạo hệ thống POS (Điểm bán hàng) từ đầu bằng ngôn ngữ lập trình PHP trong phiên bản 7, kết hợp một số tài nguyên sẽ cho phép bạn cung cấp các đặc điểm hữu ích cho bất kỳ công ty nào cần mở cửa hàng hoặc quản lý bán hàng và chứng khoán của họ.
Đây là một khóa học thực tế, nơi tôi sẽ hướng dẫn bạn từng bước trong quá trình học cách tạo các hệ thống phức tạp với PHP theo mẫu Model-View-Controller (MVC), khi bạn hoàn thành nó, bạn có thể bán nó cho khách hàng của mình hoặc nó có thể được sử dụng làm cơ sở để phát triển hệ thống phức tạp khác.

Các chức năng chính của hệ thống:

  • + Quản lý hàng tồn kho.
  • + Quản lý bán hàng với các phương thức thanh toán khác nhau.
  • + Hóa đơn in PDF.
  • + Báo cáo bán hàng trong Excel.
  • + Báo cáo khách hàng tốt nhất.
  • + Báo cáo sản phẩm bán chạy nhất.
  • + Báo cáo bán chạy nhất.
  • + Kiểm soát sản phẩm chứng khoán.
  • + Báo cáo hàng ngày.
  • + Báo cáo hàng tháng.
  • + Báo cáo phạm vi ngày.
  • + Thích ứng với tất cả các thiết bị Responsive design).

Bạn sẽ học cách sử dụng các thư viện:

  • + AdminLTE template: Mẫu nguồn mở tuyệt vời để tạo phần mềm đáp ứng.
  • + jQuery DataTable: Được sử dụng để tạo bảng động.
  • + MorrisJS: Được sử dụng cho đồ họa và thống kê động.
  • + ChartJS: Được sử dụng cho đồ họa và biểu đồ động.
  • + Date Range Picker: Được sử dụng để chọn phạm vi ngày.
  • + Input Mask: Giúp người dùng nhập liệu bằng cách đảm bảo định dạng được xác định trước
  • + TCPDF: Phần mở rộng PHP để in định dạng PDF.
  • + Và hơn thế nữa: jQuery Number, iCheck, SweetAlert2, Fast Click, Ionicons...


LINK DOWNLOAD 
Xem thêm

Thứ Hai, 12 tháng 8, 2019

Tìm file đã sửa mới nhất trong thư mục PHP

09:20 0
Có rất nhiều dự án cần xử lý file trong php. Mình cũng đang gặp phải và đã trích bài toán này ra để lưu trữ vào blog này cho mình sử dụng về sau hoặc cho ai đó cần.

Bài toán:
Tìm file mới nhất của các file trong thư mục và hiển thị tên file và thời gian mới nhất của file bằng PHP.


Các bước:
1. Mở thư mục
2. Mở file
3. So sánh thời gian của file để lấy ra file mới nhất và thời gian mới nhất.
4. Đóng file
5. Hiển thị ra kết quả.

Đây là hình ảnh của thư mục mình muốn lấy:




Đoạn code file php:
<?php
$directory= "D:\backup\aws\Invoice";
$smallest_time=0;
$latest_file='';
if ($handle = opendir($directory)) {
    while (false !== ($file = readdir($handle))) {
        $time=filemtime($directory.'/'.$file);
        if (is_file($directory.'/'.$file)) {
            if ($time > $smallest_time) {
                $latest_file = $file;
                $smallest_time = $time;
            }
        }
    }
    closedir($handle);
$lastModified = date("Y/m/d H:i:s", $smallest_time); 
}
echo $latest_file.' - '.$lastModified;

Kết quả:




Hy vọng bài toán này sẽ giúp ích được cho các bạn.

Tham khảo thêm cách tìm thời gian mới nhất của file trong thư mục bằng PHP:

            $lastestTimeUserCoordination = array_values(File::allfiles(storage_path($backupInsertPath))); 
            $fixTime = 0;             
            foreach($lastestTimeUserCoordination  as $lastestTime){                 
                $currentModified  = filemtime($lastestTime);               
                if($fixTime < $currentModified ){
                    $fixTime = $currentModified ;
                    
                }                
            }
            $lastModified = date("Y年m月d日 H時i分s秒", $fixTime); 
Xem thêm

Thứ Sáu, 4 tháng 1, 2019

Mô hình abstract trong hướng đối tượng PHP - Bài 9

17:40 0
Trong môi trường team work, khi làm việc với nhiều lập trình viên. Phải làm sao để có thể đồng nhất các vấn đề ?. Làm sao để đưa ra những chuẩn mực chung nhằm ràng buộc các lập trình viên trong dự án phải làm theo ?. Mô hình trừu tượng (abstract) sẽ giúp bạn làm những điều đó một cách dễ dàng.

Abstract là gì? 
Lớp trừu tượng là lớp chứa các phương thức trừu tượng. Các lớp kế thừa lớp trừu tượng phải thực thi các phương thức trừu tượng của lớp trừu tượng.


Xem thêm

Kỹ thuật lazy loading trong lập trình hướng đối tượng PHP - Bài 8

16:53 0
Lazy loading là kỹ thuật quan trọng trong các mô hình PHP Framework hiện nay. Nhiệm vụ của chúng là hỗ trợ chúng ta nạp 1 thư viện nào đó một cách tự động mà không cần phải require chúng trên đầu của mỗi trang.
Trước khi tìm hiểu chúng ta xem qua hai ví dụ dưới đây nhé.

Tạo file vd06.php có nội dung sau:


Tạo thêm file ABC.php cùng thư mục với file vd06.php nhé


Sau đó chúng ta chạy file vd06.php trên localhost được kết quả như sau:
Xin chào các bạn! đã xem ictsharing.com
Thật kỳ diệu phải không nào?
Vậy tại sao lại vậy các bạn hiểu thế này nhé:
 Khi truy cập vào vd06.php -> Khi khởi tạo hàm $a = new ABC thì ngay lập tức kích hoạt hàm __autoload($url) trường hợp này autoload sẽ lấy tên ABC để đưa vào trong như một biến $url khi đó chúng ta require cái biến $url chính là file ABC.php .
Bên cạnh đó, bên trong trang ABC có phương thức test, nhiệm vụ của phương thức test này là show ra "Xin chào các bạn! đã xem ictsharing.com". 
Như vậy chúng ta sử dụng autoload không cần phải require một file nào đó như cách lập trình thông thường. 
Với cách lập trình thông thường khi cần sử dụng đối tượng nào đó chúng ta phải reguire file chứa phương thức đó. Như vậy chỉ sử dụng một đối tượng mà phải load cả file đó thì tốn rất nhiều tài nguyên thay vì sử dụng autoload.

=> Bản chất của autoload là chỉ khi chúng ta khởi tạo đối tượng thì nó mới chạy, điều đó có nghĩa khi chúng ta khởi tạo nó mới đi làm việc. Khi nào cần file nào thì mới làm việc chứ không phải chúng ta require hết một loạt file trước như cách lập trình thông thường.

Phương pháp này được sử dụng phổ biến ở các framework như codeigniter hay laravel ... sau này chúng ta học tới sẽ rõ hơn.


=> Như vậy Lazi loading là gì?
Là phương pháp tử động nạp file từ bên ngoài vào khi khởi tạo đối tượng, để sử dụng phương pháp này phải tuân thủ một số các chuẩn mực như đặt tên... Nếu không sẽ không sử dụng được.

Cú pháp là:
 function __autoload(){    // do something     }

Xem thêm

Clone - Đối tượng nhân bản trong hướng đối tượng PHP - Bài 7

16:10 0
Ở phần này, ta tiếp tục tìm hiểu qua về khái niệm nhân bản, đồng thời hiểu được bản chất của vấn đề. Tại sao lại phải sử dụng từ khóa clone trong ứng dụng ?
Ví dụ dưới đây sẽ cho ta hiểu hơn nhé:


Kết quả là 500. Tại sao lại bằng 500 thì trên hình mình đã giải thích rồi các bạn đọc qua hình nhé.

Để hiểu thực tế thì liên tưởng như sau:
 Tôi đi thuê một ngôi nhà có giá trị 1000$ sau đó bạn tôi qua chơi uống rượu phê lấy búa đập một bức tưởng mất 500$. Trong trường hợp này thì bạn tôi cũng như tôi phải mất 500$ đền cho nhà chủ vì đều làm ảnh hưởng tới ngôi nhà đó. Nhưng thực tế bài toán phải giải là thằng nào đập thằng đó phải đền chứ.

Vậy làm sao để khắc phục nó thì thằng b buộc phải khởi tạo thêm đối tượng làm tốn rất nhiều tài nguyên dẫn tới ứng dụng chạy chậm.
$b = new ABC;
Dẫn tới không khả thi.

=> Để giải quyết bài toàn này chúng ta cần phải sử dụng bài toán đối tượng nhân bản Clone trong lập trình hướng đối tượng.

Ví dụ:


Kết quả là 1000

Ví dụ 2:


Kết quả là: ictsharing.com chứ không phải là ictsharing do hành động bị set_name thứ 2 đè vào.

Khi ta thêm từ khóa clone vào thì lúc này b làm gì thì kệ b giá trị a ban đầu không thay đổi vẫn là ictsharing. 
Xem code trên hình sau:

Thông qua 2 ví dụ trên hy vọng sẽ giúp các bạn hiểu hơn về nhân bản clone trong php. Giúp tiết kiệm tài nguyên hơn khi chúng ta làm việc.

Xem thêm

Khái niệm static và const trong PHP - Bài 6

15:25 0
Ở phần này, ta sẽ tìm hiểu về phương thức tĩnh, thuộc tĩnh trong hướng đối tượng. Qua đó ta cũng phân biệt được sự khác nhau giữa thuộc tính thường và thuộc tính tĩnh. Đồng thời cũng nắm thêm về khái niệm hằng trong hướng đối tượng sẽ vận dụng như thế nào.

Phương thức tĩnh - Thuộc tính tĩnh - Hằng

Ta khai báo: 
Static $name  // biến là thuộc tính tĩnh
Static function test(){   ...  } // phương thức tĩnh
 Để có thể sử dụng và truy cập được các thuộc tính hay phương thức tĩnh ta phải sử dụng từ khóa:
Self::$name;
Self::test(); 
 Đó cũng là sự khác biệt giữa các thuộc tính và phương thức thường với tĩnh.

 => Sự khác biệt giữa thuộc tính - phương thức tĩnh với thường là gì?
- Bản chất thuộc tính tĩnh là chúng ta có thể truy xuất mà không cần khởi tạo một đối tượng chỉ cần chúng ta biết tên lớp:
ABC::$name;
ABC::test();
 - Phương thức thường và thuộc tính thường khi chúng ta muốn sử dụng bắt buộc phải khởi tạo đối tượng và từ đối tượng mới có thể truy cập được các phương thức và thuộc tính này.

Ví dụ:

(*) Phương thức và thuộc tính thông thường


Kết quả: ABCDABCD

(*) Phương thức và thuộc tính TĨNH
Đối với phương thức và thuộc tĩnh tĩnh chúng ta không cần phải khởi tạo đối tượng như hình dưới đây

Như vậy thuộc tính tĩnh khác thuộc tính thường ở những điểm sau:
 - Thuộc tính tĩnh khi muốn truy cập, sử dụng các phương thức khác phải sử dụng từ khóa Self, thay vì thuộc tính thường sử dụng từ khóa This.
 - Bản thân thuộc tính tĩnh không cần khởi tạo đối tượng vẫn có thể truy cập được những thuộc tĩnh này, thậm chí phương thức cũng vậy.

Vậy khi nào chúng ta nên sử dụng thuộc tính tĩnh?
- Khi thuộc tính hay một phương thức mà chúng ta có nhu cầu sử dụng nhiều, khi chúng ta sử dụng mỗi lần lại phải khởi tạo nhiều lần tốn rất nhiều tài nguyên thì chúng ta phải gán nó về thuộc tính hay phương thức tĩnh để giải quyết bài toán một cách dễ dàng.

Hằng thì sao?
 Chúng ta sử dụng từ khóa const để khai báo Hằng.
ví dụ:
 const RED;
muốn sử dụng Hằng trong những phương thức thì chúng ta dùng từ khóa Self giống như thuộc tính tĩnh.
Self:RED;
ví dụ:
 ABC::RED;
 ==> Vậy Hằng và thuộc tính tĩnh khác nhau ở điểm nào?
- Thuộc tính tĩnh thì dấu * vẫn là một thuộc tính, khi nó là thuộc tính thì nó vẫn có thể thay đổi được.
- Trong đó Hằng là loại giá trị bất biến mà nó không thể thay đổi được.

Ví dụ cách sử dụng Hằng:


Xem thêm

Post Top Ad

Your Ad Spot