دایرکت وری
جالنو کلاس packages\base\IO\Directory
را برای مدیریت دایرکتوری ها در اختیار توسعه دهندگان قرار داده است. این کلاس بصورت abstract یا مجرد ایجاد شده و بنابراین برنامه نویس قادر به ایجاد شی بصورت مستقیم از این کلاس نمیباشد.
در حال حاضر چهار کلاس دیگر با نام های زیر از کلاس Directory مشتق شدند که با توجه به موقعیت نگهداری فایل استفاده میشوند:
نام کلاس | موقعیت نگهداری دایرکتوری |
---|---|
packages\base\IO\Directory\Local | دایرکتوری های محلی |
packages\base\IO\Directory\Tmp | دایرکتوری های محلی موقت |
packages\base\IO\Directory\Ftp | دایرکتوری های ریموت |
packages\base\IO\Directory\Sftp | دایرکتوری های ریموت |
توجه: یک شی از کلاس Directory حتما به آدرس یک دایرکتوری اشاره میکند، اما لزومی ندارد که آن دایرکتوری وجود داشته باشد. گاهی قصد ایجاد یک دایرکتوری جدید را داریم، بنابراین ابتدا یک شی از زیرکلاس های دایرکتوری میسازیم و سپس اقدام به ایجاد دایرکتوری میکنیم.
متد ها
متد هایی که در تمام زیر کلاس های Directory قابل فراخوانی هستند:
نام متد | شرح عملکرد |
---|---|
copyTo(directory $dest): bool | کپی محتویات یک دایرکتوری در یک دایرکتوری دیگر |
copyFrom(directory $source): bool | کپی محتویات از یک دایرکتوری دیگر |
delete(): mixed | حذف دایرکتوری از دیسک |
rename(string $newName): bool | تغییر نام |
move(directory $dest): bool | انتقال یک دایرکتوری به یک دایرکتوری دیگر |
make(): bool | ایجاد دایرکتوری |
files(bool $recursively): array | لیست فایل های موجود در دایرکتوری |
items(bool $recursively): array | لیست آیتم های موجود در دایرکتوری |
directories(bool $recursively): array | لیست دایرکتوری های موجود در دایرکتوری |
file(string $name): File | فایلی را به دایرکتوری نسبت میدهد |
directory(string $name): Directory | پوشه ای را به دایرکتوری نسبت میدهد |
size(): int | محاسبه حجم یک دایرکتوری بر مبنای بیت |
getPath(): string | دریافت آدرس یک دایرکتوری |
isEmpty(): bool | مشخص کننده اینکه آیا دایرکتوری خالی است یا خیر |
getDirectory(): Directory | دسترسی به پوشه حاوی این دایرکتوری را فراهم میکند. |
exists(): bool | بررسی وضعیت وجود دایرکتوری |
متغیر ها
نام | شرح |
---|---|
basename | نام پوشه در آن ذخیره شده است. |
directory | مسیر پوشه در آن ذخیره شده است. |
توجه: متغیر های کلاس Directory در تمامی نوع ها به صورت مستقیم قابل دسترسی هستند.
دایرکتوری های محلی
اگر دایرکتوری که قصد دسترسی به آن را دارید در همان سروری است که جالنو بر روی آن نصب شده، از کلاس packages\base\IO\Directory\Local
یک شی بسازید و آدرس دایرکتوری را به عنوان ورودی به آن بدهید.
علاوه بر متد های اصلی کلاس Directory
متد زیر نیز برای دا یرکتوری های محلی تعریف شده است.
نام متد | شرح عملکرد |
---|---|
getRealPath(): string | دریافت آدرس دقیق یک دایرکتوری |
توجه: اگر ابتدای آدرس وارد شده / وجود نداشته باشد، آدرس دهی بصورت نسبی و از پوشه اصلی پروژه (همان پوشه ای که فایل index.php و پوشه ی packages در آن موجود است) شروع میشود. برای کسب اطلاعات بیشتر در خصوص آدرس دهی نسبی به این مقاله مراجعه کنید.
مثال 1:
use packages\base\IO\Directory;
$directory = new Directory\Local("/home/ali/public_html/");
مثال 2:
use packages\base\IO\Directory;
$directory = new Directory\Local("packages/base");
مثال 3:
<?php
namespace package\packagename\controllers;
use packages\base\{Controller, Response, IO\Directory, view\Error, Packages};
class Directories extends Controller {
public function Make(): Response {
$inputs = $this->checkInputs(array(
"name" => array(
"type" => "string",
),
));
$directory = new Directory\Local("packages/packagename/storage/private/" . $inputs["name"]);
/**
* Or you can use Package::getDirectory instead
* $directory = Packages::package("packagename")->getDirectory("storage/private/" . $inputs["name"]);
*/
if ($directory->exists()) {
throw new Error("already_exists");
}
$directory->make(true);
$this->response->setData($directory->getPath(), "path");
$this->response->setStatus(true);
return $this->response;
}
}