Khai báo


nedka

nedka

Quản trị viên
19/09/2016 16:00

Khai báo đối tượng filesystem trong phương thức khởi tạo __construct() cũng như trong tập tin config/services.yml.

Chép
protected $filesystem;

public function __construct(\phpbb\filesystem\filesystem $filesystem)
{
	$this->filesystem= $filesystem;
}
Chép
        arguments:
             - '@filesystem'
Hoặc trong phương thức main() nếu là gói chức năng:
Chép
$this->filesystem= $phpbb_container->get('filesystem');


CHMOD và kiểm tra


nedka

nedka

Quản trị viên
19/09/2016 16:01

Đổi nhóm sở hữu
Áp dụng một thư mục hoặc tập tin:

Chép
$this->filesystem->chgrp('đường_dẫn', 'tên_nhóm')
Áp dụng nhiều thư mục hoặc tập tin:
Chép
$list = array('đường_dẫn_1', 'đường_dẫn_2');
$this->filesystem->chgrp($list, 'tên_nhóm')
Chép
$this->filesystem->chgrp(\Traversable $files, 'tên_nhóm')
Áp dụng cho tất cả thư mục và tập tin con bên trong một thư mục:
Chép
$this->filesystem->chgrp('đường_dẫn_thư_mục', 'tên_nhóm:tên_người_dùng', true)

Đổi người sở hữu
Áp dụng một thư mục hoặc tập tin:
Chép
$this->filesystem->chown('đường_dẫn', 'tên_nhóm:tên_người_dùng')
Áp dụng nhiều thư mục hoặc tập tin:
Chép
$list = array('đường_dẫn_1', 'đường_dẫn_2');
$this->filesystem->chown($list, 'tên_nhóm:tên_người_dùng')
Chép
$this->filesystem->chown(\Traversable $files, 'tên_nhóm:tên_người_dùng')
Áp dụng cho tất cả thư mục và tập tin con bên trong một thư mục:
Chép
$this->filesystem->chown('đường_dẫn_thư_mục', 'tên_nhóm:tên_người_dùng', true)

Đối cấp phép
Quy ước cấp phép chung:
Thư mục / Tập tin cho phép ghi: 0777
Các thư mục còn lại: 0755
Các tập tin còn lại: 0644
Áp dụng một thư mục hoặc tập tin:
Chép
$this->filesystem->chmod('đường_dẫn', 0777)
Áp dụng nhiều thư mục hoặc tập tin:
Chép
$list = array('đường_dẫn_1', 'đường_dẫn_2');

$this->filesystem->chmod($list, 0777)
Chép
$this->filesystem->chmod(\Traversable $files, 0777)
Áp dụng cho tất cả thư mục và tập tin con bên trong một thư mục:
Chép
$this->filesystem->chmod('đường_dẫn_thư_mục', 0777, true)

Kiểm tra tồn tại
Chép
$this->filesystem->exists('đường_dẫn')

Kiểm tra được phép đọc
Chép
$this->filesystem->is_readable('đường_dẫn')

Kiểm tra được phép ghi
Chép
$this->filesystem->is_writable('đường_dẫn')


Thao tác thư mục


nedka

nedka

Quản trị viên
19/09/2016 16:01

Tạo mới

Chép
$this->filesystem->mkdir('đường_dẫn', 0777)
hoặc
Chép
$this->filesystem->mkdir('đường_dẫn', 0755)

Sao chép
Sao chép thực sự trên Windows hoặc tạo symlink trên Mac/Linux. Symlink là một bản sao ánh xạ, khi vào đường dẫn thư mục B được dẫn về thư mục A gốc, thư mục B vẫn xem như tồn tại, tương tự shortcut trên Windows.
Chép
$this->filesystem->mirror('đường_dẫn_gốc', 'đường_dẫn_mới')

Đổi tên
Chép
$this->filesystem->rename('tên_cũ', 'tên_mới')
Ghi đè nếu trùng:
Chép
$this->filesystem->rename('tên_cũ', 'tên_mới', true)

Xóa
Áp dụng một thư mục:
Chép
$this->filesystem->remove('đường_dẫn')
Áp dụng nhiều thư mục:
Chép
$list = array('đường_dẫn_1', 'đường_dẫn_2');
$this->filesystem->remove($list)
Chép
$this->filesystem->remove(\Traversable $directories)


Thao tác tập tin


nedka

nedka

Quản trị viên
19/09/2016 16:02

Tạo mới

Chép
$this->filesystem->dump_file('đường_dẫn', 'nội_dung')

Sao chép
Chép
$this->filesystem->copy('đường_dẫn_gốc', 'đường_dẫn_mới')
Ghi đè nếu trùng:
Chép
$this->filesystem->copy('đường_dẫn_gốc', 'đường_dẫn_mới', true)

Đổi tên
Chép
$this->filesystem->rename('tên_cũ', 'tên_mới')
Ghi đè nếu trùng:
Chép
$this->filesystem->rename('tên_cũ', 'tên_mới', true)

Xóa
Áp dụng một tập tin:
Chép
$this->filesystem->remove('đường_dẫn')
Áp dụng nhiều tập tin:
Chép
$list = array('đường_dẫn_1', 'đường_dẫn_2');
$this->filesystem->remove($list,)
Chép
$this->filesystem->remove(\Traversable $files)

Thay đổi thời gian chỉnh sửa và truy cập lần cuối
Áp dụng một tập tin:
Chép
$this->filesystem->touch('đường_dẫn')
Áp dụng nhiều tập tin:
Chép
$list = array('đường_dẫn_1', 'đường_dẫn_2');
$this->filesystem->touch($list)
Chép
$this->filesystem->touch(\Traversable $files)
Tùy biến giá trị thời gian Unix:
Chép
$this->filesystem->touch('đường_dẫn', 'giá_trị_thời_gian_chỉnh_sửa', 'giá_trị_thời_gian_truy_cập')


Lấy dữ liệu về


nedka

nedka

Quản trị viên
19/09/2016 16:03

...


Xử lý các dữ liệu tải về


nedka

nedka

Quản trị viên
19/09/2016 16:03

JSON

Chép
$json = json_decode($content, true);
Toàn bộ dữ liệu JSON đã trở thành một mảng dữ liệu PHP.

Ví dụ từ tập tin composer.json của gói mở rộng ta đang viết:
Chép
{
	"extra": {
		"display-name": "Styles Demo",
		...
	}
}
Muốn lấy giá trị của display-name, ta dùng:
Chép
$json['extra']['display-name']
Trong trường hợp bạn không trả về dữ liệu JSON kiểu mảng như trên mà là kiểu đối tượng của PHP, để lấy giá trị các thực thể có ký tự không hợp lệ như display-name, ta dùng:
Chép
$json->extra->{'display-name'}

XML
Chép
$xml = simplexml_load_string($content);
Toàn bộ dữ liệu XML đã trở thành một đối tượng PHP, với các thẻ con XML giống nhau là phần tử của một mảng.

Ví dụ ta có tập tin XML sau:
Chép
<?xml version="1.0" encoding="utf-8" ?> 
<root>
	<page-title>...</page-title>
	<url>...</url>
	<posts>
		<post id="1">
			<title>...</title>
			<content>...</content>
		</post>
		<post id="2">
			<title>...</title>
			<content>...</content>
		</post>
	</posts>
</root>
Để lấy tiêu đề trang (có dấu - không hợp lệ trong tên đối tượng PHP):
Chép
$page_title = $xml->{'page-title'};
Để lấy liên kết trang:
Chép
$url = $xml->url;
Để lấy ID từng bài viết kèm tên và nội dung của chúng:
Chép
foreach ($xml->posts->post as $post)
{
	$id = $post['id'];
	$title = $post->title;
	$content= $post->content;
}


YAML
Chép
use Symfony\Component\Yaml\Yaml;
$yml = Yaml::parse($content);
Toàn bộ dữ liệu YAML đã trở thành một mảng dữ liệu PHP.

Ví dụ từ tập tin config/services.yml của gói mở rộng ta đang viết:
Chép
services:
    vinabb.demo.listener:
        class: vinabb\demo\event\listener
Để lấy giá trị của class, ta dùng:
Chép
$yml['services']['vinabb.demo.listener']['class']


Tải lên tập tin từ máy người dùng


nedka

nedka

Quản trị viên
19/09/2016 16:04

...


Tải lên tập tin từ máy chủ


nedka

nedka

Quản trị viên
19/09/2016 16:04

...


Tải lên tập tin từ trang khác


nedka

nedka

Quản trị viên
19/09/2016 16:04

...


Quan điểm

  • Không đề cập chính trị, tôn giáo, nội dung đồi trụy.
  • Giữ gìn sự trong sáng của Tiếng Việt.
  • Không chia sẻ phần mềm vi phạm bản quyền.
  • Không rao vặt và không nhận đặt quảng cáo.
  • Dù trong túi hết tiền thì diễn đàn phpBB của anh cũng phải ngay ngắn.

Chuyện tình VinaBB

17/07/2004: Yêu phpBB từ phiên bản 2.0.10.
22/10/2006: Cất tiếng cười chào đời.
11/06/2007: Chính thức định cư trên Olympus, Sao Hỏa.
11/06/2009: Mất liên lạc với Trái Đất. [ Phiên bản 2007 ]
28/07/2016: Trôi dạt đến mặt trăng Rhea, Sao Thổ.
12/12/2016: Cuộc hành trình mới lại bắt đầu…

Code in Viet Nam

Cống hiến hết mình vì Tổ Quốc Việt Nam Xã Hội Chủ Nghĩa

Quản trị viên

nedka

VinaBB

NEDKA Solutions

Đơn vị chủ quản

Chúng tôi chịu trách nhiệm toàn bộ nội dung có trên VinaBB.vn trước pháp luật.