Nette Documentation Preview

syntax
Dosya Sistemi İşlevleri
***********************

.[perex]
[api:Nette\Utils\FileSystem] bir dosya sistemi ile çalışmak için yararlı işlevler içeren bir sınıftır. Yerel PHP işlevlerine göre bir avantajı, hata durumunda istisnalar atmasıdır.


Diskte dosya aramanız gerekiyorsa [Finder |finder]'ı kullanın.

Kurulum:

```shell
composer require nette/utils
```

Aşağıdaki örneklerde, aşağıdaki sınıf takma adının tanımlandığı varsayılmaktadır:

```php
use Nette\Utils\FileSystem;
```


Manipülasyon .[#toc-manipulation]
=================================


copy(string $origin, string $target, bool $overwrite=true): void .[method]
--------------------------------------------------------------------------

Bir dosyayı veya tüm dizini kopyalar. Varsayılan olarak mevcut dosya ve dizinlerin üzerine yazar. `$overwrite` öğesi `false` olarak ayarlanmışsa ve bir `$target` zaten mevcutsa, bir `Nette\InvalidStateException` istisnası atar. Hata oluştuğunda `Nette\IOException` istisnası atar.

```php
FileSystem::copy('/path/to/source', '/path/to/dest', overwrite: true);
```


createDir(string $directory, int $mode=0777): void .[method]
------------------------------------------------------------

Üst dizinler de dahil olmak üzere, mevcut değilse bir dizin oluşturur. Hata oluştuğunda `Nette\IOException` şeklinde bir istisna atar.

```php
FileSystem::createDir('/path/to/dir');
```


delete(string $path): void .[method]
------------------------------------

Bir dosyayı veya varsa bir dizinin tamamını siler. Dizin boş değilse, önce içeriğini siler. Hata oluştuğunda `Nette\IOException` şeklinde bir istisna atar.

```php
FileSystem::delete('/path/to/fileOrDir');
```


makeWritable(string $path, int $dirMode=0777, int $fileMode=0666): void .[method]
---------------------------------------------------------------------------------

Dosya izinlerini `$fileMode` veya dizin izinlerini `$dirMode` olarak ayarlar. Özyinelemeli olarak dizinin tüm içeriğini dolaşır ve izinleri de ayarlar.

```php
FileSystem::makeWritable('/path/to/fileOrDir');
```


open(string $path, string $mode): resource .[method]
----------------------------------------------------

Dosya açar ve kaynak döndürür. `$mode` parametresi, yerel `fopen()`:https://www.php.net/manual/en/function.fopen.php işleviyle aynı şekilde çalışır. Bir hata oluşursa, `Nette\IOException` istisnasını yükseltir.

```php
$res = FileSystem::open('/path/to/file', 'r');
```


read(string $file): string .[method]
------------------------------------

Bir `$file` içeriğini okur. Hata oluştuğunda `Nette\IOException` istisnası atar.

```php
$content = FileSystem::read('/path/to/file');
```


readLines(string $file, bool $stripNewLines=true): \Generator .[method]
-----------------------------------------------------------------------

Dosya içeriğini satır satır okur. Yerel `file()` işlevinden farklı olarak, dosyanın tamamını belleğe okumaz, ancak mevcut bellekten daha büyük dosyaların okunabilmesi için sürekli olarak okur. `$stripNewLines` , `\r` ve `\n` satır sonu karakterlerinin çıkarılıp çıkarılmayacağını belirtir.
Hata durumunda, bir `Nette\IOException` istisnası yükseltir.

```php
$lines = FileSystem::readLines('/path/to/file');

foreach ($lines as $lineNum => $line) {
	echo "Line $lineNum: $line\n";
}
```


rename(string $origin, string $target, bool $overwrite=true): void .[method]
----------------------------------------------------------------------------

 `$origin` tarafından belirtilen bir dosyayı veya dizini `$target` adresine yeniden adlandırır veya taşır. Varsayılan olarak mevcut dosya ve dizinlerin üzerine yazar. `$overwrite` öğesi `false` olarak ayarlanmışsa ve `$target` zaten mevcutsa, bir `Nette\InvalidStateException` istisnası atar. Hata oluştuğunda `Nette\IOException` istisnası atar.

```php
FileSystem::rename('/path/to/source', '/path/to/dest', overwrite: true);
```


write(string $file, string $content, int $mode=0666): void .[method]
--------------------------------------------------------------------

 `$content` adresini bir `$file` adresine yazar. Hata oluştuğunda bir `Nette\IOException` istisnası atar.

```php
FileSystem::write('/path/to/file', $content);
```


Yollar .[#toc-paths]
====================


isAbsolute(string $path): bool .[method]
----------------------------------------

 `$path` adresinin mutlak olup olmadığını belirler.

```php
FileSystem::isAbsolute('../backup'); // false
FileSystem::isAbsolute('/backup');   // true
FileSystem::isAbsolute('C:/backup'); // true
```


joinPaths(string ...$segments): string .[method]
------------------------------------------------
Yolun tüm segmentlerini birleştirir ve sonucu normalleştirir.

```php
FileSystem::joinPaths('a', 'b', 'file.txt'); // 'a/b/file.txt'
FileSystem::joinPaths('/a/', '/b/');         // '/a/b/'
FileSystem::joinPaths('/a/', '/../b');       // '/b'
```


normalizePath(string $path): string .[method]
---------------------------------------------
 `..` ve `.` adreslerini ve yol içindeki dizin ayırıcılarını normalleştirir.

```php
FileSystem::normalizePath('/file/.');        // '/file/'
FileSystem::normalizePath('\file\..');       // '/file'
FileSystem::normalizePath('/file/../..');    // '/..'
FileSystem::normalizePath('file/../../bar'); // '/../bar'
```


unixSlashes(string $path): string .[method]
-------------------------------------------

Eğik çizgileri Unix sistemlerinde kullanılan `/` adresine dönüştürür.

```php
$path = FileSystem::unixSlashes($path);
```


platformSlashes(string $path): string .[method]
-----------------------------------------------

Eğik çizgileri geçerli platforma özgü karakterlere dönüştürür, yani Windows'ta `\` ve başka yerlerde `/`.

```php
$path = FileSystem::platformSlashes($path);
```


Statik ve Statik Olmayan Yaklaşım .[#toc-static-vs-non-static-approach]
=======================================================================

Örneğin test amacıyla `FileSystem` sınıfını başka bir sınıfla kolayca değiştirmek için, bunu statik olmayan bir şekilde kullanın:

```php
class AnyClassUsingFileSystem
{
	public function __construct(
		private FileSystem $fileSystem,
	) {
	}

	public function readConfig(): string
	{
		return $this->fileSystem->read(/* ... */);
	}

	...
}
```

Dosya Sistemi İşlevleri

Nette\Utils\FileSystem bir dosya sistemi ile çalışmak için yararlı işlevler içeren bir sınıftır. Yerel PHP işlevlerine göre bir avantajı, hata durumunda istisnalar atmasıdır.

Diskte dosya aramanız gerekiyorsa Finder'ı kullanın.

Kurulum:

composer require nette/utils

Aşağıdaki örneklerde, aşağıdaki sınıf takma adının tanımlandığı varsayılmaktadır:

use Nette\Utils\FileSystem;

Manipülasyon

copy(string $origin, string $target, bool $overwrite=true)void

Bir dosyayı veya tüm dizini kopyalar. Varsayılan olarak mevcut dosya ve dizinlerin üzerine yazar. $overwrite öğesi false olarak ayarlanmışsa ve bir $target zaten mevcutsa, bir Nette\InvalidStateException istisnası atar. Hata oluştuğunda Nette\IOException istisnası atar.

FileSystem::copy('/path/to/source', '/path/to/dest', overwrite: true);

createDir(string $directory, int $mode=0777)void

Üst dizinler de dahil olmak üzere, mevcut değilse bir dizin oluşturur. Hata oluştuğunda Nette\IOException şeklinde bir istisna atar.

FileSystem::createDir('/path/to/dir');

delete(string $path): void

Bir dosyayı veya varsa bir dizinin tamamını siler. Dizin boş değilse, önce içeriğini siler. Hata oluştuğunda Nette\IOException şeklinde bir istisna atar.

FileSystem::delete('/path/to/fileOrDir');

makeWritable(string $path, int $dirMode=0777, int $fileMode=0666)void

Dosya izinlerini $fileMode veya dizin izinlerini $dirMode olarak ayarlar. Özyinelemeli olarak dizinin tüm içeriğini dolaşır ve izinleri de ayarlar.

FileSystem::makeWritable('/path/to/fileOrDir');

open(string $path, string $mode): resource

Dosya açar ve kaynak döndürür. $mode parametresi, yerel fopen() işleviyle aynı şekilde çalışır. Bir hata oluşursa, Nette\IOException istisnasını yükseltir.

$res = FileSystem::open('/path/to/file', 'r');

read(string $file): string

Bir $file içeriğini okur. Hata oluştuğunda Nette\IOException istisnası atar.

$content = FileSystem::read('/path/to/file');

readLines(string $file, bool $stripNewLines=true): \Generator

Dosya içeriğini satır satır okur. Yerel file() işlevinden farklı olarak, dosyanın tamamını belleğe okumaz, ancak mevcut bellekten daha büyük dosyaların okunabilmesi için sürekli olarak okur. $stripNewLines , \r ve \n satır sonu karakterlerinin çıkarılıp çıkarılmayacağını belirtir. Hata durumunda, bir Nette\IOException istisnası yükseltir.

$lines = FileSystem::readLines('/path/to/file');

foreach ($lines as $lineNum => $line) {
	echo "Line $lineNum: $line\n";
}

rename(string $origin, string $target, bool $overwrite=true)void

$origin tarafından belirtilen bir dosyayı veya dizini $target adresine yeniden adlandırır veya taşır. Varsayılan olarak mevcut dosya ve dizinlerin üzerine yazar. $overwrite öğesi false olarak ayarlanmışsa ve $target zaten mevcutsa, bir Nette\InvalidStateException istisnası atar. Hata oluştuğunda Nette\IOException istisnası atar.

FileSystem::rename('/path/to/source', '/path/to/dest', overwrite: true);

write(string $file, string $content, int $mode=0666)void

$content adresini bir $file adresine yazar. Hata oluştuğunda bir Nette\IOException istisnası atar.

FileSystem::write('/path/to/file', $content);

Yollar

isAbsolute(string $path)bool

$path adresinin mutlak olup olmadığını belirler.

FileSystem::isAbsolute('../backup'); // false
FileSystem::isAbsolute('/backup');   // true
FileSystem::isAbsolute('C:/backup'); // true

joinPaths(string …$segments)string

Yolun tüm segmentlerini birleştirir ve sonucu normalleştirir.

FileSystem::joinPaths('a', 'b', 'file.txt'); // 'a/b/file.txt'
FileSystem::joinPaths('/a/', '/b/');         // '/a/b/'
FileSystem::joinPaths('/a/', '/../b');       // '/b'

normalizePath(string $path)string

.. ve . adreslerini ve yol içindeki dizin ayırıcılarını normalleştirir.

FileSystem::normalizePath('/file/.');        // '/file/'
FileSystem::normalizePath('\file\..');       // '/file'
FileSystem::normalizePath('/file/../..');    // '/..'
FileSystem::normalizePath('file/../../bar'); // '/../bar'

unixSlashes(string $path)string

Eğik çizgileri Unix sistemlerinde kullanılan / adresine dönüştürür.

$path = FileSystem::unixSlashes($path);

platformSlashes(string $path)string

Eğik çizgileri geçerli platforma özgü karakterlere dönüştürür, yani Windows'ta \ ve başka yerlerde /.

$path = FileSystem::platformSlashes($path);

Statik ve Statik Olmayan Yaklaşım

Örneğin test amacıyla FileSystem sınıfını başka bir sınıfla kolayca değiştirmek için, bunu statik olmayan bir şekilde kullanın:

class AnyClassUsingFileSystem
{
	public function __construct(
		private FileSystem $fileSystem,
	) {
	}

	public function readConfig(): string
	{
		return $this->fileSystem->read(/* ... */);
	}

	...
}