Php ghi đè tập tin

Zip bạn có thể hiểu nó giống như một thùng chứa, bên trong thùng chứa này sẽ chứa tất cả các tệp dưới dạng nén. Điều này vô cùng có lợi khi bạn muốn giảm dung lượng file, làm nhẹ hệ thống, giúp quá trình download, upload file diễn ra nhanh hơn. Tạo tệp zip trong php chính là sử dụng thư viện hỗ trợ của PHP để giúp nén các tệp lại trong thùng chứa zip 1 cách dễ dàng

2. Hướng dẫn tạo tệp zip trong PHP

PHP cung cấp 1 thư viện gọi là ZipArchive , nó hỗ trợ lập trình viên có thể tạo tệp zip trong PHP một cách dễ dàng. Để có thể tạo file zip trong php các bạn xem qua một đoạn mã nhỏ thực thi việc tạo file zip như sau

Ví dụ 1

// Khởi tạo đối tượng ZipArchive
$zip = new ZipArchive(); 

// Dùng zip open để đặt tên cho tên file zip sẽ được tạo ra ví dụ abc.zip, xyz.zip
$zip->open('đường_dẫn_file_zip', ZipArchive::CREATE); 

// Thêm file some-file.pdf vào zip, đồng thời đổi lại thành tên filename.pdf
$zip->addFile('some-file.pdf', 'filename.pdf'); 

// Thêm file another-file.xlsx vào zip, đồng thời đổi lại thành tên filename.xlsx
$zip->addFile('another-file.xlxs', 'filename.xlxs'); 

// Close để hoàn thành tiến trình zip file
$zip->close();

Giải thích. Ở đoạn mã trên, đầu tiên chúng ta chỉ đơn giản là khởi động tạo đối tượng ZipArchive để sử dụng tính năng zip của PHP, tiếp theo là đưa các tệp cần nén vào. Kết quả của đoạn mã trên sẽ cho chúng ta một tệp zip chứa các tệp mà chúng ta đã thêm vào

Ví dụ 2

Cũng tương tự như ví dụ 1, nhưng ở đây mình sẽ viết một chức năng để thuận tiện trong việc xử lý nhiều tệp zip. Xem đoạn mã dưới đây

open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
			return false;
		}
		// Thêm file trong mảng files vào file zip
		foreach($valid_files as $file) {
			$zip->addFile($file,$file);
		}

		// Đóng tiến trình zip
		$zip->close();

		//check to make sure the file exists
		return file_exists($destination);
	}
	else
	{
		return false;
	}
}

p/s. Mình đã comment khá kỹ ở đoạn code trên, mong các bạn đọc sẽ hiểu. p. Nếu có thắc mắc thì để lại comment bên dưới hen

Cách sử dụng chức năng như sau

$files_to_zip = array(
	'images/1.jpg',
	'images/2.jpg',
	'images/5.jpg',
	'images/ringo.gif',
	'rod.jpg',
	'reddit.gif'
);
// nếu $result trả về true là zip ok, ngược lại là fail :p
$result = create_zip($files_to_zip,'my-archive.zip');

3. Tổng kết

Với tệp zip mã 2 đoạn đơn giản là bạn có thể sử dụng để giải quyết các vấn đề giảm dung lượng tệp khi tải lên hoặc tải xuống trong trang web ứng dụng của bạn 1 cách tối ưu. Chúc các bạn học tốt

Ngoài ra, vui lòng thay thế

public function sole($key = null, $operator = null, $value = null);

0 bằng

public function sole($key = null, $operator = null, $value = null);

1 và

public function sole($key = null, $operator = null, $value = null);

2 (nếu có) bằng

public function sole($key = null, $operator = null, $value = null);

3 trong tệp

public function ignore(string $class);

5 của đơn đăng ký của bạn

Hơn nữa, các gói của bên thứ nhất sau đây đã nhận được các bản phát hành chính mới để hỗ trợ Laravel 9. x. Nếu có thể, bạn nên đọc hướng dẫn nâng cấp riêng của họ trước khi nâng cấp

Cuối cùng, hãy kiểm tra bất kỳ gói bên thứ ba nào khác được sử dụng bởi ứng dụng của bạn và xác minh rằng bạn đang sử dụng phiên bản phù hợp để hỗ trợ Laravel 9

Các kiểu trả về PHP

PHP đang bắt đầu chuyển sang yêu cầu các định nghĩa kiểu trả về trên các phương thức PHP, chẳng hạn như

public function sole($key = null, $operator = null, $value = null);

5,

public function sole($key = null, $operator = null, $value = null);

6, v.v. Do đó, Laravel 9 đã triển khai các kiểu trả về này trong cơ sở mã của nó. Thông thường, điều này sẽ không ảnh hưởng đến mã do người dùng viết;

  • public function sole($key = null, $operator = null, $value = null);

    7
  • public function sole($key = null, $operator = null, $value = null);

    8
  • public function sole($key = null, $operator = null, $value = null);

    9
  • open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
    			return false;
    		}
    		// Thêm file trong mảng files vào file zip
    		foreach($valid_files as $file) {
    			$zip->addFile($file,$file);
    		}
    
    		// Đóng tiến trình zip
    		$zip->close();
    
    		//check to make sure the file exists
    		return file_exists($destination);
    	}
    	else
    	{
    		return false;
    	}
    }
    30
  • open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
    			return false;
    		}
    		// Thêm file trong mảng files vào file zip
    		foreach($valid_files as $file) {
    			$zip->addFile($file,$file);
    		}
    
    		// Đóng tiến trình zip
    		$zip->close();
    
    		//check to make sure the file exists
    		return file_exists($destination);
    	}
    	else
    	{
    		return false;
    	}
    }
    31
  • open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
    			return false;
    		}
    		// Thêm file trong mảng files vào file zip
    		foreach($valid_files as $file) {
    			$zip->addFile($file,$file);
    		}
    
    		// Đóng tiến trình zip
    		$zip->close();
    
    		//check to make sure the file exists
    		return file_exists($destination);
    	}
    	else
    	{
    		return false;
    	}
    }
    32
  • open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
    			return false;
    		}
    		// Thêm file trong mảng files vào file zip
    		foreach($valid_files as $file) {
    			$zip->addFile($file,$file);
    		}
    
    		// Đóng tiến trình zip
    		$zip->close();
    
    		//check to make sure the file exists
    		return file_exists($destination);
    	}
    	else
    	{
    		return false;
    	}
    }
    33
  • open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
    			return false;
    		}
    		// Thêm file trong mảng files vào file zip
    		foreach($valid_files as $file) {
    			$zip->addFile($file,$file);
    		}
    
    		// Đóng tiến trình zip
    		$zip->close();
    
    		//check to make sure the file exists
    		return file_exists($destination);
    	}
    	else
    	{
    		return false;
    	}
    }
    34

Ngoài ra, các kiểu trả về đã được thêm vào các phương thức triển khai PHP's

open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
			return false;
		}
		// Thêm file trong mảng files vào file zip
		foreach($valid_files as $file) {
			$zip->addFile($file,$file);
		}

		// Đóng tiến trình zip
		$zip->close();

		//check to make sure the file exists
		return file_exists($destination);
	}
	else
	{
		return false;
	}
}
35. Một lần nữa, không chắc rằng thay đổi này ảnh hưởng đến ứng dụng hoặc mã gói của riêng bạn

  • open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
    			return false;
    		}
    		// Thêm file trong mảng files vào file zip
    		foreach($valid_files as $file) {
    			$zip->addFile($file,$file);
    		}
    
    		// Đóng tiến trình zip
    		$zip->close();
    
    		//check to make sure the file exists
    		return file_exists($destination);
    	}
    	else
    	{
    		return false;
    	}
    }
    36
  • open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
    			return false;
    		}
    		// Thêm file trong mảng files vào file zip
    		foreach($valid_files as $file) {
    			$zip->addFile($file,$file);
    		}
    
    		// Đóng tiến trình zip
    		$zip->close();
    
    		//check to make sure the file exists
    		return file_exists($destination);
    	}
    	else
    	{
    		return false;
    	}
    }
    37
  • open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
    			return false;
    		}
    		// Thêm file trong mảng files vào file zip
    		foreach($valid_files as $file) {
    			$zip->addFile($file,$file);
    		}
    
    		// Đóng tiến trình zip
    		$zip->close();
    
    		//check to make sure the file exists
    		return file_exists($destination);
    	}
    	else
    	{
    		return false;
    	}
    }
    38
  • open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
    			return false;
    		}
    		// Thêm file trong mảng files vào file zip
    		foreach($valid_files as $file) {
    			$zip->addFile($file,$file);
    		}
    
    		// Đóng tiến trình zip
    		$zip->close();
    
    		//check to make sure the file exists
    		return file_exists($destination);
    	}
    	else
    	{
    		return false;
    	}
    }
    39
  • $files_to_zip = array(
    	'images/1.jpg',
    	'images/2.jpg',
    	'images/5.jpg',
    	'images/ringo.gif',
    	'rod.jpg',
    	'reddit.gif'
    );
    // nếu $result trả về true là zip ok, ngược lại là fail :p
    $result = create_zip($files_to_zip,'my-archive.zip');
    30
  • $files_to_zip = array(
    	'images/1.jpg',
    	'images/2.jpg',
    	'images/5.jpg',
    	'images/ringo.gif',
    	'rod.jpg',
    	'reddit.gif'
    );
    // nếu $result trả về true là zip ok, ngược lại là fail :p
    $result = create_zip($files_to_zip,'my-archive.zip');
    31

Đăng kí

Hợp đồng
$files_to_zip = array(
	'images/1.jpg',
	'images/2.jpg',
	'images/5.jpg',
	'images/ringo.gif',
	'rod.jpg',
	'reddit.gif'
);
// nếu $result trả về true là zip ok, ngược lại là fail :p
$result = create_zip($files_to_zip,'my-archive.zip');
32

Khả năng tác động. Thấp

Phương thức

$files_to_zip = array(
	'images/1.jpg',
	'images/2.jpg',
	'images/5.jpg',
	'images/ringo.gif',
	'rod.jpg',
	'reddit.gif'
);
// nếu $result trả về true là zip ok, ngược lại là fail :p
$result = create_zip($files_to_zip,'my-archive.zip');
33 của giao diện
$files_to_zip = array(
	'images/1.jpg',
	'images/2.jpg',
	'images/5.jpg',
	'images/ringo.gif',
	'rod.jpg',
	'reddit.gif'
);
// nếu $result trả về true là zip ok, ngược lại là fail :p
$result = create_zip($files_to_zip,'my-archive.zip');
34 đã được cập nhật để chấp nhận đối số
$files_to_zip = array(
	'images/1.jpg',
	'images/2.jpg',
	'images/5.jpg',
	'images/ringo.gif',
	'rod.jpg',
	'reddit.gif'
);
// nếu $result trả về true là zip ok, ngược lại là fail :p
$result = create_zip($files_to_zip,'my-archive.zip');
35. Nếu bạn đang triển khai giao diện này, bạn nên cập nhật việc triển khai của mình cho phù hợp

$files_to_zip = array(
	'images/1.jpg',
	'images/2.jpg',
	'images/5.jpg',
	'images/ringo.gif',
	'rod.jpg',
	'reddit.gif'
);
// nếu $result trả về true là zip ok, ngược lại là fail :p
$result = create_zip($files_to_zip,'my-archive.zip');
9

Tương tự, phương thức

$files_to_zip = array(
	'images/1.jpg',
	'images/2.jpg',
	'images/5.jpg',
	'images/ringo.gif',
	'rod.jpg',
	'reddit.gif'
);
// nếu $result trả về true là zip ok, ngược lại là fail :p
$result = create_zip($files_to_zip,'my-archive.zip');
36 của lớp
$files_to_zip = array(
	'images/1.jpg',
	'images/2.jpg',
	'images/5.jpg',
	'images/ringo.gif',
	'rod.jpg',
	'reddit.gif'
);
// nếu $result trả về true là zip ok, ngược lại là fail :p
$result = create_zip($files_to_zip,'my-archive.zip');
37 đã được cập nhật để chấp nhận đối số
$files_to_zip = array(
	'images/1.jpg',
	'images/2.jpg',
	'images/5.jpg',
	'images/ringo.gif',
	'rod.jpg',
	'reddit.gif'
);
// nếu $result trả về true là zip ok, ngược lại là fail :p
$result = create_zip($files_to_zip,'my-archive.zip');
35

public function sole($key = null, $operator = null, $value = null);

3

Phương thức xử lý ngoại lệ
$files_to_zip = array(
	'images/1.jpg',
	'images/2.jpg',
	'images/5.jpg',
	'images/ringo.gif',
	'rod.jpg',
	'reddit.gif'
);
// nếu $result trả về true là zip ok, ngược lại là fail :p
$result = create_zip($files_to_zip,'my-archive.zip');
39

Khả năng tác động. Thấp

Phương thức

$files_to_zip = array(
	'images/1.jpg',
	'images/2.jpg',
	'images/5.jpg',
	'images/ringo.gif',
	'rod.jpg',
	'reddit.gif'
);
// nếu $result trả về true là zip ok, ngược lại là fail :p
$result = create_zip($files_to_zip,'my-archive.zip');
39 của trình xử lý ngoại lệ hiện là

public function sole($key = null, $operator = null, $value = null);

61 thay vì

public function sole($key = null, $operator = null, $value = null);

62. Phương pháp này không được bao gồm trong khung ứng dụng mặc định;

public function ignore(string $class);

Ràng buộc hợp đồng xử lý ngoại lệ

Khả năng tác động. Rất thấp

Trước đây, để ghi đè trình xử lý ngoại lệ mặc định của Laravel, các triển khai tùy chỉnh được liên kết vào bộ chứa dịch vụ bằng cách sử dụng loại

public function sole($key = null, $operator = null, $value = null);

64. Tuy nhiên, bây giờ bạn nên ràng buộc các triển khai tùy chỉnh bằng cách sử dụng loại

public function sole($key = null, $operator = null, $value = null);

65

Lưỡi

Bộ sưu tập lười biếng & Biến

public function sole($key = null, $operator = null, $value = null);

66

Khả năng tác động. Thấp

Khi lặp lại một phiên bản

public function sole($key = null, $operator = null, $value = null);

67 trong mẫu Blade, biến

public function sole($key = null, $operator = null, $value = null);

66 không còn nữa, vì việc truy cập biến này khiến toàn bộ

public function sole($key = null, $operator = null, $value = null);

67 được tải vào bộ nhớ, do đó khiến việc sử dụng các bộ sưu tập lười biếng trở nên vô nghĩa trong tình huống này

Đã kiểm tra / Đã tắt / Chỉ thị lưỡi đã chọn

Khả năng tác động. Thấp

Các chỉ thị Blade mới của

public function sole($key = null, $operator = null, $value = null);

60,

public function sole($key = null, $operator = null, $value = null);

61 và

public function sole($key = null, $operator = null, $value = null);

62 có thể xung đột với các sự kiện cùng tên của Vue. Bạn có thể sử dụng

public function sole($key = null, $operator = null, $value = null);

63 để thoát khỏi các chỉ thị và tránh xung đột này.

public function sole($key = null, $operator = null, $value = null);

64

bộ sưu tập

Hợp đồng

public function sole($key = null, $operator = null, $value = null);

65

Khả năng tác động. Thấp

Hợp đồng

public function sole($key = null, $operator = null, $value = null);

66 hiện xác định một phương thức

public function sole($key = null, $operator = null, $value = null);

67. Nếu bạn đang triển khai giao diện này theo cách thủ công, bạn nên cập nhật cách triển khai của mình để phản ánh phương pháp mới này

public function sole($key = null, $operator = null, $value = null);

Phương pháp

public function sole($key = null, $operator = null, $value = null);

68

Phương thức

public function sole($key = null, $operator = null, $value = null);

68 đã bị xóa vì phương thức

public function sole($key = null, $operator = null, $value = null);

70 cung cấp chức năng tương tự. Bạn có thể chỉ cần cập nhật mã của mình để gọi

public function sole($key = null, $operator = null, $value = null);

70 thay vì

public function sole($key = null, $operator = null, $value = null);

68

Phương pháp

public function sole($key = null, $operator = null, $value = null);

73

Phương thức

public function sole($key = null, $operator = null, $value = null);

73 đã được đổi tên thành

public function sole($key = null, $operator = null, $value = null);

75 để đặt tên thống nhất với các phương thức tương tự khác

Thùng đựng hàng

Hợp đồng

public function sole($key = null, $operator = null, $value = null);

76

Khả năng tác động. Rất thấp

Hợp đồng

public function sole($key = null, $operator = null, $value = null);

77 đã nhận được hai định nghĩa phương pháp.

public function sole($key = null, $operator = null, $value = null);

78 và

public function sole($key = null, $operator = null, $value = null);

79. Nếu bạn đang triển khai hợp đồng này theo cách thủ công, bạn nên cập nhật việc triển khai của mình để phản ánh các phương pháp mới này

Hợp đồng

public function sole($key = null, $operator = null, $value = null);

70

Khả năng tác động. Rất thấp

Hợp đồng

public function sole($key = null, $operator = null, $value = null);

71 hiện xác định một phương thức

public function sole($key = null, $operator = null, $value = null);

72. Nếu bạn đang triển khai giao diện này theo cách thủ công, bạn nên cập nhật cách triển khai của mình để phản ánh phương pháp mới này

open($destination,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) {
			return false;
		}
		// Thêm file trong mảng files vào file zip
		foreach($valid_files as $file) {
			$zip->addFile($file,$file);
		}

		// Đóng tiến trình zip
		$zip->close();

		//check to make sure the file exists
		return file_exists($destination);
	}
	else
	{
		return false;
	}
}
3

cơ sở dữ liệu

Cấu hình "Lược đồ" Postgres

Khả năng tác động. Trung bình

Tùy chọn cấu hình

public function sole($key = null, $operator = null, $value = null);

73 được sử dụng để định cấu hình đường dẫn tìm kiếm kết nối Postgres trong tệp cấu hình

public function sole($key = null, $operator = null, $value = null);

74 của ứng dụng của bạn nên được đổi tên thành

public function sole($key = null, $operator = null, $value = null);

75

Phương pháp Trình tạo lược đồ

public function sole($key = null, $operator = null, $value = null);

76

Khả năng tác động. Thấp

Phương thức

public function sole($key = null, $operator = null, $value = null);

76 đã bị xóa khỏi lớp

public function sole($key = null, $operator = null, $value = null);

78. Thay vào đó, bạn có thể sử dụng phương pháp

public function sole($key = null, $operator = null, $value = null);

79 trên mặt tiền

public function sole($key = null, $operator = null, $value = null);

300 hoặc đăng ký các loại Doctrine tùy chỉnh trong tệp cấu hình

public function sole($key = null, $operator = null, $value = null);

74

hùng hồn

Diễn viên tùy chỉnh &

public function sole($key = null, $operator = null, $value = null);

302

Khả năng tác động. Trung bình

Trong các bản phát hành trước của Laravel, phương thức

public function sole($key = null, $operator = null, $value = null);

303 của các lớp truyền tùy chỉnh không được gọi nếu thuộc tính truyền được đặt thành

public function sole($key = null, $operator = null, $value = null);

302. Tuy nhiên, hành vi này không phù hợp với tài liệu của Laravel. Trong Laravel 9. x, phương thức

public function sole($key = null, $operator = null, $value = null);

303 của lớp cast sẽ được gọi với

public function sole($key = null, $operator = null, $value = null);

302 làm đối số

public function sole($key = null, $operator = null, $value = null);

307 được cung cấp. Do đó, bạn nên đảm bảo rằng các diễn viên tùy chỉnh của mình có đủ khả năng xử lý tình huống này

$files_to_zip = array(
	'images/1.jpg',
	'images/2.jpg',
	'images/5.jpg',
	'images/ringo.gif',
	'rod.jpg',
	'reddit.gif'
);
// nếu $result trả về true là zip ok, ngược lại là fail :p
$result = create_zip($files_to_zip,'my-archive.zip');
3

Thuộc về nhiều phương thức

public function sole($key = null, $operator = null, $value = null);

308,

public function sole($key = null, $operator = null, $value = null);

309 và

public function sole($key = null, $operator = null, $value = null);

310

Khả năng tác động. Trung bình

Các phương thức

public function sole($key = null, $operator = null, $value = null);

308,

public function sole($key = null, $operator = null, $value = null);

309 và

public function sole($key = null, $operator = null, $value = null);

310 của mối quan hệ

public function sole($key = null, $operator = null, $value = null);

311 đều chấp nhận một mảng các thuộc tính làm đối số đầu tiên của chúng. Trong các bản phát hành trước của Laravel, mảng thuộc tính này được so sánh với bảng "trục"/bảng trung gian cho các bản ghi hiện có

Tuy nhiên, hành vi này là bất ngờ và thường không mong muốn. Thay vào đó, các phương thức này hiện so sánh mảng thuộc tính với bảng của mô hình liên quan

public function sole($key = null, $operator = null, $value = null);

6

Ngoài ra, phương thức

public function sole($key = null, $operator = null, $value = null);

309 hiện chấp nhận một mảng

public function sole($key = null, $operator = null, $value = null);

316 làm đối số thứ hai của nó. Mảng này sẽ được hợp nhất với đối số đầu tiên của phương thức (

public function sole($key = null, $operator = null, $value = null);

317) khi tạo mô hình liên quan nếu một đối số chưa tồn tại. Thay đổi này làm cho phương pháp này nhất quán với các phương pháp

public function sole($key = null, $operator = null, $value = null);

309 được cung cấp bởi các loại mối quan hệ khác

public function sole($key = null, $operator = null, $value = null);

6

Phương pháp

public function sole($key = null, $operator = null, $value = null);

319

Khả năng tác động. Thấp

Phương thức

public function sole($key = null, $operator = null, $value = null);

319 hiện chấp nhận thuộc tính touch. Nếu trước đây bạn đã ghi đè phương thức này, bạn nên cập nhật chữ ký phương thức của mình để phản ánh đối số mới này

public function sole($key = null, $operator = null, $value = null);

7

mã hóa

Hợp đồng mã hóa

Khả năng tác động. Thấp

Hợp đồng

public function sole($key = null, $operator = null, $value = null);

321 hiện xác định một phương thức

public function sole($key = null, $operator = null, $value = null);

322. Nếu bạn đang triển khai giao diện này theo cách thủ công, bạn nên cập nhật cách triển khai của mình cho phù hợp

mặt tiền

Phương pháp

public function sole($key = null, $operator = null, $value = null);

323

Khả năng tác động. Thấp

Phương thức

public function sole($key = null, $operator = null, $value = null);

323 phải luôn trả về khóa liên kết vùng chứa. Trong các bản phát hành trước của Laravel, phương thức này có thể trả về một thể hiện đối tượng; . Nếu bạn đã viết các mặt tiền của riêng mình, bạn nên đảm bảo rằng phương thức này trả về một chuỗi liên kết vùng chứa

public function sole($key = null, $operator = null, $value = null);

7

Hệ thống tập tin

Biến môi trường

public function sole($key = null, $operator = null, $value = null);

325

Khả năng tác động. Thấp

Biến môi trường

public function sole($key = null, $operator = null, $value = null);

325 đã được đổi tên thành

public function sole($key = null, $operator = null, $value = null);

327 để phản ánh chính xác hơn việc sử dụng nó. Thay đổi này chỉ ảnh hưởng đến khung ứng dụng;

Đĩa "Đám mây"

Khả năng tác động. Thấp

Tùy chọn cấu hình đĩa

public function sole($key = null, $operator = null, $value = null);

328 đã bị xóa khỏi khung ứng dụng mặc định vào tháng 11 năm 2020. Thay đổi này chỉ ảnh hưởng đến khung ứng dụng. Nếu bạn đang sử dụng đĩa

public function sole($key = null, $operator = null, $value = null);

328 trong ứng dụng của mình, bạn nên để giá trị cấu hình này trong khung của ứng dụng của riêng bạn

hệ thống ruồi 3. x

Khả năng tác động. Cao

ấu trùng 9. x đã di chuyển từ Flysystem 1. x đến 3. x. Về cơ bản, Flysystem cung cấp năng lượng cho tất cả các phương pháp thao tác tệp được cung cấp bởi mặt tiền

public function sole($key = null, $operator = null, $value = null);

330. Do đó, một số thay đổi có thể được yêu cầu trong ứng dụng của bạn;

Điều kiện tiên quyết của trình điều khiển

Trước khi sử dụng trình điều khiển S3, FTP hoặc SFTP, bạn sẽ cần cài đặt gói thích hợp thông qua trình quản lý gói Composer

  • amazon S3.

    public function sole($key = null, $operator = null, $value = null);

    331
  • FTP.

    public function sole($key = null, $operator = null, $value = null);

    332
  • SFTP.

    public function sole($key = null, $operator = null, $value = null);

    333

Ghi đè tập tin hiện có

Các thao tác ghi như

public function sole($key = null, $operator = null, $value = null);

334,

public function sole($key = null, $operator = null, $value = null);

335 và

public function sole($key = null, $operator = null, $value = null);

336 hiện ghi đè lên các tệp hiện có theo mặc định. Nếu bạn không muốn ghi đè lên các tệp hiện có, bạn nên kiểm tra sự tồn tại của tệp theo cách thủ công trước khi thực hiện thao tác ghi

Viết ngoại lệ

Các thao tác ghi như

public function sole($key = null, $operator = null, $value = null);

334,

public function sole($key = null, $operator = null, $value = null);

335 và

public function sole($key = null, $operator = null, $value = null);

336 không còn đưa ra ngoại lệ khi thao tác ghi không thành công. Thay vào đó,

public function sole($key = null, $operator = null, $value = null);

340 được trả lại. Nếu bạn muốn duy trì hành vi trước đó đã tạo ra ngoại lệ, bạn có thể xác định tùy chọn

public function sole($key = null, $operator = null, $value = null);

341 trong mảng cấu hình của đĩa hệ thống tệp

Đọc tập tin bị thiếu

Cố gắng đọc từ một tệp không tồn tại hiện trả về

public function sole($key = null, $operator = null, $value = null);

302. Trong các bản phát hành trước của Laravel, một

public function sole($key = null, $operator = null, $value = null);

343 sẽ bị ném

Xóa tập tin bị thiếu

Đang cố gắng

public function sole($key = null, $operator = null, $value = null);

344 một tệp không tồn tại hiện trả về

public function sole($key = null, $operator = null, $value = null);

345

Bộ điều hợp được lưu trong bộ nhớ cache

Flysystem không còn hỗ trợ "bộ điều hợp được lưu trong bộ nhớ cache". Do đó, chúng đã bị xóa khỏi Laravel và mọi cấu hình có liên quan (chẳng hạn như khóa

public function sole($key = null, $operator = null, $value = null);

346 trong cấu hình đĩa) đều có thể bị xóa

Hệ thống tập tin tùy chỉnh

Các thay đổi nhỏ đã được thực hiện đối với các bước cần thiết để đăng ký trình điều khiển hệ thống tệp tùy chỉnh. Do đó, nếu bạn đang xác định trình điều khiển hệ thống tệp tùy chỉnh của riêng mình hoặc sử dụng các gói xác định trình điều khiển tùy chỉnh, bạn nên cập nhật mã và các phần phụ thuộc của mình

Ví dụ, trong Laravel 8. x, trình điều khiển hệ thống tệp tùy chỉnh có thể được đăng ký như vậy

public function sole($key = null, $operator = null, $value = null);

30

Tuy nhiên, trong Laravel 9. x, lệnh gọi lại được cung cấp cho phương thức

public function sole($key = null, $operator = null, $value = null);

347 sẽ trả về trực tiếp một phiên bản của

public function sole($key = null, $operator = null, $value = null);

348

public function sole($key = null, $operator = null, $value = null);

31

Người giúp việc

public function sole($key = null, $operator = null, $value = null);

349 Helper & Iterable Objects

Khả năng tác động. Rất thấp

Trước đây, trình trợ giúp

public function sole($key = null, $operator = null, $value = null);

349 có thể được sử dụng để truy xuất dữ liệu lồng nhau trên các mảng và phiên bản

public function sole($key = null, $operator = null, $value = null);

351;

Người trợ giúp

public function sole($key = null, $operator = null, $value = null);

352

Khả năng tác động. Rất thấp

ấu trùng 9. x hiện bao gồm một

public function sole($key = null, $operator = null, $value = null);

352 toàn cầu. Nếu bạn đang xác định một trình trợ giúp toàn cầu

public function sole($key = null, $operator = null, $value = null);

352 trong ứng dụng của mình, bạn nên đổi tên hoặc xóa nó để nó không xung đột với trình trợ giúp

public function sole($key = null, $operator = null, $value = null);

352 của chính Laravel

Phương pháp

public function sole($key = null, $operator = null, $value = null);

356 /

public function sole($key = null, $operator = null, $value = null);

357

Khả năng tác động. Trung bình

Như bạn có thể biết, các phương thức

public function sole($key = null, $operator = null, $value = null);

356 và

public function sole($key = null, $operator = null, $value = null);

357 được cung cấp bởi nhiều lớp khác nhau trong toàn bộ khung. Các phương thức này có thể được sử dụng để thực hiện một hành động có điều kiện nếu giá trị boolean của đối số đầu tiên của phương thức ước tính là

public function sole($key = null, $operator = null, $value = null);

345 hoặc

public function sole($key = null, $operator = null, $value = null);

340

public function sole($key = null, $operator = null, $value = null);

32

Do đó, trong các bản phát hành trước của Laravel, việc chuyển một bao đóng cho các phương thức

public function sole($key = null, $operator = null, $value = null);

356 hoặc

public function sole($key = null, $operator = null, $value = null);

357 có nghĩa là hoạt động có điều kiện sẽ luôn thực thi, vì một phép so sánh lỏng lẻo với một đối tượng bao đóng (hoặc bất kỳ đối tượng nào khác) luôn ước tính thành

public function sole($key = null, $operator = null, $value = null);

345. Điều này thường dẫn đến kết quả không mong muốn vì các nhà phát triển mong muốn kết quả của việc đóng sẽ được sử dụng làm giá trị boolean xác định xem hành động có điều kiện có thực thi hay không

Vì vậy, trong Laravel 9. x, bất kỳ bao đóng nào được truyền cho các phương thức

public function sole($key = null, $operator = null, $value = null);

356 hoặc

public function sole($key = null, $operator = null, $value = null);

357 sẽ được thực thi và giá trị được trả về bởi bao đóng sẽ được coi là giá trị boolean được sử dụng bởi các phương thức

public function sole($key = null, $operator = null, $value = null);

356 và

public function sole($key = null, $operator = null, $value = null);

357

public function sole($key = null, $operator = null, $value = null);

33

Máy khách HTTP

Thời gian chờ mặc định

Khả năng tác động. Trung bình

Máy khách HTTP hiện có thời gian chờ mặc định là 30 giây. Nói cách khác, nếu máy chủ không phản hồi trong vòng 30 giây, một ngoại lệ sẽ được đưa ra. Trước đây, không có độ dài thời gian chờ mặc định nào được định cấu hình trên máy khách HTTP, khiến các yêu cầu đôi khi bị "treo" vô thời hạn

Nếu bạn muốn chỉ định thời gian chờ lâu hơn cho một yêu cầu nhất định, bạn có thể làm như vậy bằng cách sử dụng phương pháp

public function sole($key = null, $operator = null, $value = null);

369

public function sole($key = null, $operator = null, $value = null);

34

Giả mạo HTTP & Phần mềm trung gian

Khả năng tác động. Thấp

Trước đây, Laravel sẽ không thực thi bất kỳ phần mềm trung gian Guzzle HTTP nào được cung cấp khi máy khách HTTP bị "làm giả". Tuy nhiên, trong Laravel 9. x, Phần mềm trung gian HTTP lừa đảo sẽ được thực thi ngay cả khi ứng dụng khách HTTP bị giả mạo

HTTP Fake & Dependency Injection

Khả năng tác động. Thấp

Trong các bản phát hành trước của Laravel, việc gọi phương thức

public function sole($key = null, $operator = null, $value = null);

370 sẽ không ảnh hưởng đến các phiên bản của

public function sole($key = null, $operator = null, $value = null);

371 đã được đưa vào các hàm tạo của lớp. Tuy nhiên, trong Laravel 9. x,

public function sole($key = null, $operator = null, $value = null);

370 sẽ đảm bảo các phản hồi giả mạo được trả về bởi các máy khách HTTP được đưa vào các dịch vụ khác thông qua phép nội xạ phụ thuộc. Hành vi này phù hợp hơn với hành vi của các mặt tiền và hàng giả khác

Người gửi thư Symfony

Khả năng tác động. Cao

Một trong những thay đổi lớn nhất trong Laravel 9. x là quá trình chuyển đổi từ SwiftMailer, không còn được duy trì kể từ tháng 12 năm 2021, sang Symfony Mailer. Tuy nhiên, chúng tôi đã cố gắng thực hiện quá trình chuyển đổi này liền mạch nhất có thể cho các ứng dụng của bạn. Nói như vậy, vui lòng xem kỹ danh sách các thay đổi bên dưới để đảm bảo ứng dụng của bạn hoàn toàn tương thích

Điều kiện tiên quyết của trình điều khiển

Để tiếp tục sử dụng dịch vụ vận chuyển Mailgun, ứng dụng của bạn phải yêu cầu gói Trình soạn thảo

public function sole($key = null, $operator = null, $value = null);

373 và

public function sole($key = null, $operator = null, $value = null);

374

public function sole($key = null, $operator = null, $value = null);

35

Nên xóa gói Trình soạn thảo

public function sole($key = null, $operator = null, $value = null);

375 khỏi ứng dụng của bạn. Thay vào đó, ứng dụng của bạn nên yêu cầu các gói Trình soạn thảo

public function sole($key = null, $operator = null, $value = null);

376 và

public function sole($key = null, $operator = null, $value = null);

374

public function sole($key = null, $operator = null, $value = null);

36

Các loại trả lại được cập nhật

Các phương pháp ________ 3378,

public function sole($key = null, $operator = null, $value = null);

379, ________ 3380 và ________ 3381 trên ________ 3382 không còn trả về

public function sole($key = null, $operator = null, $value = null);

383. Thay vào đó, một thể hiện của

public function sole($key = null, $operator = null, $value = null);

384 được trả về. Đối tượng này chứa một thể hiện của

public function sole($key = null, $operator = null, $value = null);

385 có thể truy cập thông qua phương thức

public function sole($key = null, $operator = null, $value = null);

386 hoặc bằng cách gọi động các phương thức trên đối tượng

Phương thức "Swift" được đổi tên

Nhiều phương thức liên quan đến SwiftMailer, một số phương thức không có giấy tờ, đã được đổi tên thành các đối tác Symfony Mailer của chúng. Ví dụ: phương thức

public function sole($key = null, $operator = null, $value = null);

387 đã được đổi tên thành

public function sole($key = null, $operator = null, $value = null);

388

public function sole($key = null, $operator = null, $value = null);

37

Cảnh báo
Vui lòng xem kỹ tất cả các tương tác có thể có với đối tượng

public function sole($key = null, $operator = null, $value = null);

389.

Danh sách dưới đây chứa tổng quan kỹ lưỡng hơn về các phương thức được đổi tên. Nhiều phương thức trong số này là các phương thức cấp thấp được sử dụng để tương tác trực tiếp với SwiftMailer / Symfony Mailer, do đó có thể không được sử dụng phổ biến trong hầu hết các ứng dụng Laravel

public function sole($key = null, $operator = null, $value = null);

38

Phương thức

public function sole($key = null, $operator = null, $value = null);

390 được ủy quyền

public function sole($key = null, $operator = null, $value = null);

390 thường ủy quyền các phương thức bị thiếu cho phiên bản

public function sole($key = null, $operator = null, $value = null);

392 bên dưới. Tuy nhiên, thay vào đó, các phương thức bị thiếu hiện được ủy quyền cho một phiên bản của

public function sole($key = null, $operator = null, $value = null);

389. Vì vậy, bất kỳ mã nào trước đây dựa vào các phương thức bị thiếu để được ủy quyền cho SwiftMailer phải được cập nhật thành các đối tác Symfony Mailer tương ứng của chúng

Một lần nữa, nhiều ứng dụng có thể không tương tác với các phương thức này, vì chúng không được ghi lại trong tài liệu của Laravel

public function sole($key = null, $operator = null, $value = null);

39

ID tin nhắn đã tạo

SwiftMailer cung cấp khả năng xác định miền tùy chỉnh để đưa vào ID thư được tạo thông qua tùy chọn cấu hình

public function sole($key = null, $operator = null, $value = null);

394. Điều này không được hỗ trợ bởi Symfony Mailer. Thay vào đó, Symfony Mailer sẽ tự động tạo ID thư dựa trên người gửi

public function sole($key = null, $operator = null, $value = null);

395 Thay đổi sự kiện

Thuộc tính

public function sole($key = null, $operator = null, $value = null);

396 của sự kiện

public function sole($key = null, $operator = null, $value = null);

397 hiện chứa một thể hiện của

public function sole($key = null, $operator = null, $value = null);

389 thay vì một thể hiện của

public function sole($key = null, $operator = null, $value = null);

392. Thông báo này đại diện cho email trước khi nó được gửi

Ngoài ra, một thuộc tính

public function ignore(string $class);

00 mới đã được thêm vào sự kiện

public function sole($key = null, $operator = null, $value = null);

395. Thuộc tính này chứa một thể hiện của

public function sole($key = null, $operator = null, $value = null);

384 và chứa thông tin về email đã gửi, chẳng hạn như ID thư

Kết nối lại cưỡng bức

Không còn có thể buộc kết nối lại vận chuyển (ví dụ: khi người gửi thư đang chạy qua quy trình daemon). Thay vào đó, Symfony Mailer sẽ cố gắng tự động kết nối lại với phương tiện truyền tải và đưa ra một ngoại lệ nếu kết nối lại không thành công

Tùy chọn luồng SMTP

Xác định các tùy chọn luồng cho truyền tải SMTP không còn được hỗ trợ. Thay vào đó, bạn phải xác định các tùy chọn liên quan trực tiếp trong cấu hình nếu chúng được hỗ trợ. Ví dụ: để tắt xác minh ngang hàng TLS

Để tìm hiểu thêm về các tùy chọn cấu hình có sẵn, vui lòng xem lại

Cảnh báo
Mặc dù có ví dụ ở trên, nhưng nhìn chung bạn không nên tắt xác minh SSL vì nó dẫn đến khả năng xảy ra các cuộc tấn công "người trung gian".

SMTP

public function ignore(string $class);

03

Việc xác định SMTP

public function ignore(string $class);

03 trong tệp cấu hình

public function ignore(string $class);

05 không còn cần thiết nữa. Chế độ xác thực sẽ được thương lượng tự động giữa Symfony Mailer và máy chủ SMTP

Người nhận không thành công

Không còn có thể truy xuất danh sách người nhận không thành công sau khi gửi tin nhắn. Thay vào đó, một ngoại lệ

public function ignore(string $class);

06 sẽ được đưa ra nếu một tin nhắn không gửi được. Thay vì dựa vào việc truy xuất địa chỉ email không hợp lệ sau khi gửi thư, chúng tôi khuyên bạn nên xác thực địa chỉ email trước khi gửi thư thay thế

gói

Thư mục

public function ignore(string $class);

07

Khả năng tác động. Trung bình

Trong các ứng dụng Laravel mới, thư mục

public function ignore(string $class);

08 hiện nằm trong thư mục dự án gốc (

public function ignore(string $class);

07). Nếu gói của bạn đang xuất bản các tệp ngôn ngữ vào thư mục này, bạn nên đảm bảo rằng gói của bạn đang xuất bản tới

public function ignore(string $class);

10 thay vì đường dẫn được mã hóa cứng

Xếp hàng

Thư viện

public function ignore(string $class);

11

Khả năng tác động. Thấp

Laravel phụ thuộc vào _______ 711 đã được thay thế bằng ________ 713. Điều này sẽ không gây ra bất kỳ thay đổi vi phạm nào trong ứng dụng của bạn trừ khi bạn đang tương tác trực tiếp với thư viện

public function ignore(string $class);

11. Ngoài ra, các lớp

public function ignore(string $class);

15 và

public function ignore(string $class);

16 không dùng nữa đã bị xóa. Nếu bạn đang tương tác trực tiếp với thư viện

public function ignore(string $class);

11 hoặc sử dụng bất kỳ lớp nào đã bị xóa, bạn có thể sử dụng Laravel Serializable Closure để thay thế

Người cung cấp việc làm thất bại Phương pháp

public function ignore(string $class);

18

Khả năng tác động. Thấp

Phương thức

public function ignore(string $class);

18 được xác định bởi giao diện

public function ignore(string $class);

20 hiện chấp nhận đối số

public function ignore(string $class);

21 xác định tuổi của một công việc không thành công (tính bằng giờ) trước khi nó bị xóa bởi lệnh

public function ignore(string $class);

22. Nếu bạn đang triển khai thủ công

public function ignore(string $class);

23, bạn nên đảm bảo rằng việc triển khai của bạn được cập nhật để phản ánh đối số mới này

public function ignore(string $class);

0

Phiên họp

Phương pháp

public function ignore(string $class);

24

Khả năng tác động. Thấp

Lớp

public function ignore(string $class);

25 được mở rộng bởi lớp

public function ignore(string $class);

26 của chính Laravel cung cấp một phương thức

public function ignore(string $class);

24 để lấy bộ xử lý lưu trữ phiên hiện tại. Phương pháp này không được Laravel ghi lại vì hầu hết các ứng dụng của Laravel tương tác với phiên thông qua phương thức

public function ignore(string $class);

28 của chính Laravel

Phương thức

public function ignore(string $class);

24 trước đó đã trả về một thể hiện của

public function ignore(string $class);

30 hoặc

public function sole($key = null, $operator = null, $value = null);

302; . x thực thi loại trả về của

public function ignore(string $class);

32, thì giờ đây,

public function ignore(string $class);

24 trả về chính xác việc triển khai

public function ignore(string $class);

34 hoặc đưa ra một ngoại lệ

public function ignore(string $class);

35 khi không có phiên nào

thử nghiệm

Phương pháp

public function ignore(string $class);

36

Khả năng tác động. Trung bình

Tất cả các cuộc gọi đến phương thức

public function ignore(string $class);

36 phải được cập nhật thành

public function ignore(string $class);

38

Proxy đáng tin cậy

Khả năng tác động. Thấp

Nếu bạn đang nâng cấp dự án Laravel 8 của mình lên Laravel 9 bằng cách nhập mã ứng dụng hiện tại của bạn vào khung ứng dụng Laravel 9 hoàn toàn mới, bạn có thể cần cập nhật phần mềm trung gian "ủy quyền ủy nhiệm" của ứng dụng của mình

Trong tệp

public function ignore(string $class);

39 của bạn, hãy cập nhật

public function ignore(string $class);

40 thành

public function ignore(string $class);

41

Tiếp theo, trong vòng

public function ignore(string $class);

39, bạn nên cập nhật định nghĩa thuộc tính

public function ignore(string $class);

43

public function ignore(string $class);

1

Cuối cùng, bạn có thể xóa phụ thuộc

public function ignore(string $class);

44 Composer khỏi ứng dụng của mình

public function ignore(string $class);

2

Thẩm định

Yêu cầu biểu mẫu Phương thức

public function ignore(string $class);

45

Khả năng tác động. Thấp

Phương thức

public function ignore(string $class);

45 được cung cấp bởi các yêu cầu biểu mẫu hiện chấp nhận các đối số

public function ignore(string $class);

47 và

public function ignore(string $class);

48. Nếu bạn đang ghi đè định nghĩa của phương thức này theo cách thủ công, bạn nên cập nhật chữ ký của phương thức để phản ánh các đối số mới này

public function ignore(string $class);

3

Quy tắc

public function ignore(string $class);

49

Khả năng tác động. Trung bình

Quy tắc

public function ignore(string $class);

49, xác thực rằng giá trị đầu vào đã cho khớp với mật khẩu hiện tại của người dùng được xác thực, đã được đổi tên thành

public function ignore(string $class);

51

Khóa mảng chưa được xác thực

Khả năng tác động. Trung bình

Trong các bản phát hành trước của Laravel, bạn được yêu cầu hướng dẫn thủ công trình xác thực của Laravel để loại trừ các khóa mảng chưa được xác thực khỏi dữ liệu "đã xác thực" mà nó trả về, đặc biệt khi kết hợp với quy tắc

public function ignore(string $class);

52 không chỉ định danh sách các khóa được phép

Tuy nhiên, trong Laravel 9. x, các khóa mảng chưa được xác thực luôn bị loại trừ khỏi dữ liệu "đã xác thực" ngay cả khi không có khóa được phép nào được chỉ định thông qua quy tắc

public function ignore(string $class);

52. Thông thường, hành vi này là hành vi được mong đợi nhất và phương thức

public function ignore(string $class);

54 trước đó chỉ được thêm vào Laravel 8. x như một biện pháp tạm thời để duy trì khả năng tương thích ngược

Mặc dù nó không được khuyến nghị, nhưng bạn có thể chọn tham gia Laravel 8 trước đó. x bằng cách gọi một phương thức

public function ignore(string $class);

55 mới trong phương thức

public function ignore(string $class);

56 của một trong những nhà cung cấp dịch vụ của ứng dụng của bạn

public function ignore(string $class);

4

Điều khoản khác

Chúng tôi cũng khuyến khích bạn xem các thay đổi trong kho lưu trữ GitHub của

public function ignore(string $class);

57. Mặc dù nhiều thay đổi trong số này là không bắt buộc, nhưng bạn có thể muốn giữ các tệp này đồng bộ với ứng dụng của mình. Một số thay đổi này sẽ được đề cập trong hướng dẫn nâng cấp này, nhưng những thay đổi khác, chẳng hạn như thay đổi đối với tệp cấu hình hoặc nhận xét, sẽ không được đề cập. Bạn có thể dễ dàng xem các thay đổi bằng công cụ so sánh GitHub và chọn bản cập nhật nào quan trọng đối với bạn