Documentation

OverridableFile extends File
in package

Diese Klasse repräsentiert einen InputStream, bei dem über die Methode addDirectory mehrere Speicherorte definiert werden. Das Objekt sucht dann an den verschiedenen Orten nach der Vorlage. Zuerst wird in dem zuletzt hinzugefügten gesucht.

Zuerst wird in dem Beispiel im Verzeichnis /B/ und dann in Verzeichnis /A/ nach dem Template template.txt gesucht.

$file = new \Alvine\IO\File\File('template.txt');
$template = new FileTemplate($file);
$directoryA = new \Alvine\IO\File\Directory('/A/');
$template->addDirectory($directoryA);
$directoryB = new \Alvine\IO\File\Directory('/B/');
$template->addDirectory($directoryB);
$content = (string) $template;
Tags
category

Framework

author

schukai GmbH [email protected]

license

http://alvine.io/license/ Licence

link

Alvine

since
20110917

Table of Contents

Constants

APIVERSION  = 1
Version der API-Version der Klasse.
IDENTIFICATION  = 'Alvine'
Identifizierung der Alvine API
SERIALVERSION  = 1
Version der Klasse (wird für die Serialisierung verwendet. Ändert sich der interne Aufbau der Klasse, so muss dieser Wert nach oben gesetzt werden. Die Serialisierung muss diesen Wert abfragen und bei Bedarf einen Wrapper für das Arbeiten mit veralteten Objekten implmenetieren.
VERSION  = 2
Generelle Alvine-Version

Properties

$basename  : string
$directory  : Directory
$extension  : string
$filename  : string
$hasAssociatedProperties  : boolean
$hash  : string
Eindeutige ID
$hasVolatileProperties  : boolean
$inputStream  : FileInputStream
$outputStream  : FileInputStream
$path  : string
$pathinfo  : array
Zwischenspeicher für den analysierten Pfad
$properties  : array
$protocol  : string

Methods

__call()  : mixed
Ein Closures das dem Objekt übergeben wurde, kann entweder als Property oder als Funktion aufgerufen werden.
__clone()  : mixed
Interne Hook für das Clonen des Objektes. Wenn das zu klonende Objekt bereits eine eindeutige ID hat, dann wird auch für das neue Objekt eine eindeutige ID erstellt.
__construct()  : mixed
File-Objekt
__get()  : mixed
Diese Methode wird inplizit aufgerufen wenn eine nicht definierte Eigenschaft abgefragt wird. Ist die Eigenschaft eine Anonyme-Funktion (Closure), so wird diese Funktion aufgerufen und die Klasse als Parameter übergeben.
__isset()  : boolean
Wird aufgerufen, wenn isset() auf ein internes Property angewendet wird.
__serialize()  : array<string|int, mixed>
Serialization of the object and data. In the serialized object also stores meta-information for matching.
__set()  : void
Jede von der Alvine-Klasse abgeleitete Klasse besitzt die Fähigkeit beliebige Werte und Lambda-Funktionen an das Objekt zu hängen.
__toString()  : string
Standardumwandlung des Inhalts der Klasse in eine Zeichenkette
__unserialize()  : void
__unset()  : mixed
Zurücksetzen von Werten
addDirectory()  : FileTemplate
Neues Verzeichnis hinzufügen, in dem die gewünschte Datei gesucht wird.
canExecute()  : boolean
Ist die Datei vorhanden und ausführbar?
canRead()  : boolean
Ist die Datei vorhanden und ist sie lesbar?
canWrite()  : boolean
Ist File schreibbar?
create()  : File
Datei anlegen
delete()  : File
Verzeichnis oder Datei löschen. Wurde mit dem File-Objekt ein Stream erstellt, so wird dieser vor dem Löschen geschlossen.
equals()  : boolean
Diese Funktion vergleicht zwei Objekte. Dazu wird von beiden der Wert, der von `Alvine::getID()` zurückgeliefert wird ermittelt und das Ergebnis verglichen. Vererbte Klassen können diese Methode überschreiben.
exists()  : boolean
Existiert das File-Objekt im Dateisystem?
fromCurrentFilename()  : File
Factory
getBasename()  : string
Basisname
getClass()  : string
Name der Klasse
getClone()  : Alvine
Diese Methode gibt ein geklontes Objekt von sich selber zurück.
getClosure()  : Closure
Closure über den definierten Namen holen. Ist keine Eigenschaft mit dem Namen definiert, so wird eine BadPropertyException geworfen. Gibt es eine Eigenchaft mit dem Namen, ist diese aber kein Closure, so wird eine NotFoundException geworfen.
getDirectory()  : Directory
Verzeichnis
getExtension()  : string
Erweiterung des Dateinamens
getHashCode()  : string
Die Methode Alvine::getID() verwenden!
getID()  : string
Diese Methode gibt eine eindeutige ID des Objektes zurück. Bei der ID handelt es sich um eine Zeichenkette in der Form einer UUID.
getInputStream()  : FileInputStream
Erstellt aus dem File-Objekt ein Stream und merkt sich diesen. Beim mehrfachen Aufruf der Methode wird immer das gleiche Streamobjekt zurückgegeben. Dadurch wird auch der Dateizeiger nicht zurückgesetzt und am aktuellen Stand der Datei weitergelesen.
getMimeType()  : MediaType
Ermittelt den MediaType der Datei. Wird eine leere Datei mit der Endung .txt angegeben, so wird nicht inode/x-empty sondern text/plain zurückgegeben.
getName()  : string
Dateiname
getOutputStream()  : FileOutputStream
Erstellt aus dem File-Objekt ein Stream und merkt sich diesen. Beim mehrfachen Aufruf der Methode wird immer das gleiche Streamobjekt zurückgegeben.
getProtocol()  : string|null
Prtokoll
getShortID()  : string
Diese Methode entfernt alle Minuszeichen aus der UUID des Hash. Wird eine Länge definiert, so wird nach dem entfernen der Minuszeichen die ersten $length Zeichen zurückgegeben.
hasAssociatedProperties()  : boolean
Check if the object has associative properties
hasVolatileProperties()  : boolean
Prüfen ob das Objekt volatile Eigenschaften besitzt
isAbsolute()  : boolean
Wrapper für Directory::isAbsolute();
isCallable()  : bool
Mit dieser Methode kann geprüft werden, ob eine Methode aufrufbar ist. Das gilt für echte und eingehängte DI-Methoden (Lambda).
isDirectory()  : boolean
Prüft im Dateisystem ob der Pfad ein Verzeichnis ist.
isFile()  : boolean
Ist das Objekt vom Typ Datei oder Stream
isInstanceOf()  : boolean
Prüft ob das übergebene Objekt eine Instanz dieses Objektes ist. Allerdings ist darauf zu achten, das vorher definiert wurde, das das neue Objekt von Alvine abgeleitet wurde.
isLink()  : boolean
Prüft im Dateisystem ob der Pfad ein Verzeichnis ist.
isStream()  : boolean
Ist das Objekt vom Typ Stream zum Beispiel php://memory
propertyExists()  : boolean
Prüfen ob eine Eigenschaft als dynamische Eigenschaft verfügbar ist, die über $obj->property abgefragt werden kann.
rename()  : File
Datei im Dateisystem umbenennen. Das Dateiobjekt hat danach den neuen Namen. Das Verzeichnis wird vom aktuellen Objekt genommen.
setDirecotory()  : File
setDirectory()  : File
Neues Verzeichnis setzen.
analyzeAndAssign()  : void
Analysieren
checkAndAdjustSerialisation()  : array<string|int, mixed>
Dealing with versions

Constants

APIVERSION

Version der API-Version der Klasse.

public mixed APIVERSION = 1

IDENTIFICATION

Identifizierung der Alvine API

public mixed IDENTIFICATION = 'Alvine'

SERIALVERSION

Version der Klasse (wird für die Serialisierung verwendet. Ändert sich der interne Aufbau der Klasse, so muss dieser Wert nach oben gesetzt werden. Die Serialisierung muss diesen Wert abfragen und bei Bedarf einen Wrapper für das Arbeiten mit veralteten Objekten implmenetieren.

public mixed SERIALVERSION = 1

https://php.watch/versions/8.1/serializable-deprecated

VERSION

Generelle Alvine-Version

public mixed VERSION = 2

Properties

$basename

protected string $basename = null

Basename (aus pathinfo)

$extension

protected string $extension = null

Erweiterung des Dateinamens

$filename

protected string $filename = null

Dateiname (aus pathinfo)

$hash

Eindeutige ID

protected string $hash = null

Die ID wird erst über die Methode \Alvine\Core\Alvine::getID() bei Bedarf ermittelt, deshalb müssen auch abgeleitete Klassen nicht direkt auf den Wert zugreifen, sondern den Wert über getID() holen.

Hash-Wert des Objekts (UUID)

$path

protected string $path = null

interner Pfad

$pathinfo

Zwischenspeicher für den analysierten Pfad

protected array $pathinfo = null

Zwischenspeicher

$properties

protected array $properties = []

Liste mit dynamischen Eigenschaften die über __get und __set bearbeitet werden können.

$protocol

protected string $protocol = null

Protokoll

Methods

__call()

Ein Closures das dem Objekt übergeben wurde, kann entweder als Property oder als Funktion aufgerufen werden.

public __call(string $name, array $arguments) : mixed

Achtung: Wird das Closure in einem Objekt definiert, so ist die Variable $this nicht das Objekt des Closures, sondern des, in dem das Closure definiert wurde.

// als erster Parameter wird immer das Objekt übergeben
$a->myfunction = function($obj, $b) { echo $b.'!'; };
// Aufruf als Eigenschaft ohne Parameter
$a->myfunction;  // Ausgabe ist ein !
//
// Aufruf als Methode mit Parametern
$a->myfunction('OK');  // Ausgabe ist  OK!
Parameters
$name : string

Funktionsname

$arguments : array

Argumente

Tags
throws
NotCallableException

Exception

Return values
mixed

Ergebnis des Callbacks

__clone()

Interne Hook für das Clonen des Objektes. Wenn das zu klonende Objekt bereits eine eindeutige ID hat, dann wird auch für das neue Objekt eine eindeutige ID erstellt.

public __clone() : mixed

Alvine-Objekte werden rekursive geclont, so das ein vollständiger Clone vorhanden ist.

__construct()

File-Objekt

public __construct(string $file[, Directory $base = null ]) : mixed

Neues File-Objekt erstellen. Wird ein Directory-Objekt übergeben, so wird dieses als Basisverzeichnis verwendet.

Parameters
$file : string

Dateiname oder Datei mit Verzeichnis

$base : Directory = null

Verzeichnis wenn bei $file nur der Name angegeben wurde.

__get()

Diese Methode wird inplizit aufgerufen wenn eine nicht definierte Eigenschaft abgefragt wird. Ist die Eigenschaft eine Anonyme-Funktion (Closure), so wird diese Funktion aufgerufen und die Klasse als Parameter übergeben.

public __get(string $name) : mixed

Vor der Abfrage sollte, damit keine Exception geworfen wird, die Existenz der Eigenschaft geprüft werden.

if($obj->propertyExists('myproperty')) {
  $value = $obj->myproperty;
}
Parameters
$name : string

Name der Eigenschaft

Tags
throws
BadPropertyException
Return values
mixed

Wert der Eigenschaft

__isset()

Wird aufgerufen, wenn isset() auf ein internes Property angewendet wird.

public __isset(string $name) : boolean
Parameters
$name : string
Return values
boolean

__serialize()

Serialization of the object and data. In the serialized object also stores meta-information for matching.

public __serialize() : array<string|int, mixed>

If a derived class is not to be serializable, then this * method must be overridden and throw an exception. this method must be overridden and throw an exception.

Properties starting with volatile or associated. are handled separately. Properties with prefix volatile are not serialized. For properties with the prefix associated, only the * ID of the object is serialized. ID of the object is serialized. If no object is stored in the property is stored in the property, a TypeException is thrown.

Tags
see
https://php.watch/versions/8.1/serializable-deprecated
Return values
array<string|int, mixed>

__set()

Jede von der Alvine-Klasse abgeleitete Klasse besitzt die Fähigkeit beliebige Werte und Lambda-Funktionen an das Objekt zu hängen.

public __set(string $name, mixed $value) : void

Diese Methode wird indirekt aufgerufen, sobald ein Wert oder eine Funktion einem Objekt zugeordnet wird, die nicht definiert wurde.

class MyObject extends Alvine {
}

$obj = new MyObject();
$obj->myValue = 4;

Parameters
$name : string

Name der Eigenschaft

$value : mixed

Wert der Eigenschaft

Return values
void

__toString()

Standardumwandlung des Inhalts der Klasse in eine Zeichenkette

public __toString() : string
echo (string) new MyObect();
Return values
string

Daten des Objekts

__unset()

Zurücksetzen von Werten

public __unset(string $name) : mixed
Parameters
$name : string

addDirectory()

Neues Verzeichnis hinzufügen, in dem die gewünschte Datei gesucht wird.

public addDirectory(Directory $dir) : FileTemplate
Parameters
$dir : Directory

Verzeichnis

Return values
FileTemplate

Dieses Objekt

canExecute()

Ist die Datei vorhanden und ausführbar?

public canExecute() : boolean
Return values
boolean

true oder false

canRead()

Ist die Datei vorhanden und ist sie lesbar?

public canRead() : boolean
Return values
boolean

true oder false

canWrite()

Ist File schreibbar?

public canWrite() : boolean
Return values
boolean

true oder false

create()

Datei anlegen

public create([boolean $overwrite = false ]) : File

Legt eine leere Datei unter dem definierten Dateinamen an. Existiert die Datei bereits, so wird eine Exception geworfen. Ist $overwrite gesetzt, so wird eine bestehende Datei überschrieben und keine Exception geworfen.

Parameters
$overwrite : boolean = false

Überschreiben

Tags
throws
IOException
Return values
File

delete()

Verzeichnis oder Datei löschen. Wurde mit dem File-Objekt ein Stream erstellt, so wird dieser vor dem Löschen geschlossen.

public delete() : File
Tags
throws
IOException

Fehler beim löschen

throws
NotFoundException

Die Datei existiert nicht

Return values
File

equals()

Diese Funktion vergleicht zwei Objekte. Dazu wird von beiden der Wert, der von `Alvine::getID()` zurückgeliefert wird ermittelt und das Ergebnis verglichen. Vererbte Klassen können diese Methode überschreiben.

public equals(Alvine $object) : boolean
class MyObject extends Alvine };

$objA = new MyObject();
$objB = new MyObject();

if($objA->equals($objB)) {
  // ...
}
Parameters
$object : Alvine

Objekt das überprüft werden soll

Return values
boolean

true wenn beide Objekte identisch sind.

exists()

Existiert das File-Objekt im Dateisystem?

public exists() : boolean
Return values
boolean

true oder false

fromCurrentFilename()

Factory

public static fromCurrentFilename(string $filename) : File

Factory um ein File-Objekt auf einen Datei im aktuellen Verzeichnis zu erstellen. Dies ist eine Bequemlichkeitfunktion.

// File-Properties
$stream = Alvine\IO\File::fromCurrentFilename('file.properties');

Wichtig: Es wird immer das Verzeichnis des direkten aufrufers ermittelt.

Parameters
$filename : string

Dateiname ohne Pfadangaben

Tags
throws
InvalidArgumentException
Return values
File

Neues Objekt

getBasename()

Basisname

public getBasename() : string

Name der Datei (inkl. Erweiterung)

Return values
string

Name

getClass()

Name der Klasse

public getClass() : string
class MyObject extends Alvine };
$obj = new MyObject();

echo $obj->getClass();
Tags
see
ClassType::getNormalizedName
Return values
string

Klassenname

getClone()

Diese Methode gibt ein geklontes Objekt von sich selber zurück.

public getClone([boolean $deepClone = false ]) : Alvine

Wenn eine abgeleitete Klasse diese Methode nicht unterstützt, so muss diese die Methode überschreiben und eine CloneNotSupportedException werfen. Die Standardmethode klont eine seichte Kopie der Eigenschaften. Das bedeutet das Objekte in den Eigenschaften nicht geclont werden. Sollen diese auch geclont werden muss true übergeben werden.

Wenn weitere Funktionen implementiert werden sollen, so muss __clone überschrieben werden

Parameters
$deepClone : boolean = false

Clone aller enthaltenen Objekte

Tags
see
Alvine::__clone()
Return values
Alvine

getClosure()

Closure über den definierten Namen holen. Ist keine Eigenschaft mit dem Namen definiert, so wird eine BadPropertyException geworfen. Gibt es eine Eigenchaft mit dem Namen, ist diese aber kein Closure, so wird eine NotFoundException geworfen.

public getClosure(string $name) : Closure
Parameters
$name : string

Name des Closure

Tags
throws
NotFoundException
throws
BadPropertyException
Return values
Closure

getDirectory()

Verzeichnis

public getDirectory() : Directory

Falls ein Protokoll angegeben wurd, so wird das Verzeichnis mit dem Protokoll zurückgegeben

Return values
Directory

Verzeichnis

getExtension()

Erweiterung des Dateinamens

public getExtension() : string

Diese Methode gibt den rechten Teil des Dateinamens nach dem Punkt zurück. Sind mehrere Punkte im Dateinamen, so wird der letzte genommen.

readme.txt liefert txt zurück.

Return values
string

Extension einer Datei ohne Punkt

getHashCode()

Die Methode Alvine::getID() verwenden!

public getHashCode() : string
Tags
deprecated
20140611
Return values
string

Hashwert des Objektes

getID()

Diese Methode gibt eine eindeutige ID des Objektes zurück. Bei der ID handelt es sich um eine Zeichenkette in der Form einer UUID.

public getID() : string

Objekte haben bei der Erstellung noch keine eindeutige ID, erst mit dem expliziten Aufruf der ID wird diese einmalig erstellt und im Objekt gepseichert.

Diese Methode wird implizit beim Serialisieren aufgerufen.

Die UUID ist dabei vom Type4 (Random)

Return values
string

UUID des Objektes

getInputStream()

Erstellt aus dem File-Objekt ein Stream und merkt sich diesen. Beim mehrfachen Aufruf der Methode wird immer das gleiche Streamobjekt zurückgegeben. Dadurch wird auch der Dateizeiger nicht zurückgesetzt und am aktuellen Stand der Datei weitergelesen.

public getInputStream() : FileInputStream

Möchte man die Datei wieder von vorne lesen, so muss vorher FileInputStream::rewind() aufgerufen werden.

Return values
FileInputStream

Stream-Objekt

getMimeType()

Ermittelt den MediaType der Datei. Wird eine leere Datei mit der Endung .txt angegeben, so wird nicht inode/x-empty sondern text/plain zurückgegeben.

public getMimeType() : MediaType

Bei einer leeren Datei mit der Endung .txt wird als MediaType 'text/plain' zurückgegeben.

Installation

Windows

Um diese Erweitrung auf Windows verwenden zu können, muss zum einen die Erweiterung mittels extension=php_fileinfo.dll in der php.ini eingeschalten werden. Zum anderen werden die magic-Dateien (magic und magic.mgc) aus dem winGNU Projekt benötigt. Beide Dateien müssen in das PHP-Root-Verzeichnis kopoiert werden. Sollen die Dateien an einem anderen Ort liegen, so muss diese Speicherstelle über die Umgebungs- variable MAGIC bekannt gegeben werden. werden.

*nux

Je nach installation können die magic-Dateien an einem anderen Ort liegen. Der Speicherort der Dateien muss über die Umgebungsvariable MAGIC bekannt gegeben werden.

Tags
link

Download magic-Dateien

Return values
MediaType

MediaType

getName()

Dateiname

public getName() : string

Name der Datei (ohne Erweiterung)

Return values
string

Name

getOutputStream()

Erstellt aus dem File-Objekt ein Stream und merkt sich diesen. Beim mehrfachen Aufruf der Methode wird immer das gleiche Streamobjekt zurückgegeben.

public getOutputStream() : FileOutputStream
Return values
FileOutputStream

Stream-Objekt

getProtocol()

Prtokoll

public getProtocol() : string|null
Return values
string|null

getShortID()

Diese Methode entfernt alle Minuszeichen aus der UUID des Hash. Wird eine Länge definiert, so wird nach dem entfernen der Minuszeichen die ersten $length Zeichen zurückgegeben.

public getShortID([int|null $length = null ]) : string

Diese Methode ist hilfreich um Platz zu sparen.

Je kürzer die ID ist, um so größer ist die Wahrscheinlichkeit einer Kollision mit anderen Hash vergleichbarer Objekte.

Parameters
$length : int|null = null
Return values
string

isAbsolute()

Wrapper für Directory::isAbsolute();

public isAbsolute() : boolean
Return values
boolean

isCallable()

Mit dieser Methode kann geprüft werden, ob eine Methode aufrufbar ist. Das gilt für echte und eingehängte DI-Methoden (Lambda).

public isCallable(string $name) : bool
if($obj->isCallable('myfunction')) {
  $obj->myfunction();
}
Parameters
$name : string

Name der Methode

Return values
bool

Ergebnis

isDirectory()

Prüft im Dateisystem ob der Pfad ein Verzeichnis ist.

public isDirectory() : boolean
Tags
throws
IOException
Return values
boolean

true oder false

isFile()

Ist das Objekt vom Typ Datei oder Stream

public isFile() : boolean
Return values
boolean

true oder false

isInstanceOf()

Prüft ob das übergebene Objekt eine Instanz dieses Objektes ist. Allerdings ist darauf zu achten, das vorher definiert wurde, das das neue Objekt von Alvine abgeleitet wurde.

public isInstanceOf(object $object) : boolean
if($obj instanceof Alvine &&
   $obj->isInstanceOf($object)) { };

Die Prüfung entspricht

$this instanceof $object
Parameters
$object : object
Return values
boolean

Prüft im Dateisystem ob der Pfad ein Verzeichnis ist.

public isLink() : boolean
Tags
throws
IOException
Return values
boolean

true oder false

isStream()

Ist das Objekt vom Typ Stream zum Beispiel php://memory

public isStream() : boolean
Return values
boolean

true oder false

propertyExists()

Prüfen ob eine Eigenschaft als dynamische Eigenschaft verfügbar ist, die über $obj->property abgefragt werden kann.

public propertyExists(string $name) : boolean
if($obj->propertyExists('myproperty')) {
  $value = $obj->myproperty;
}
Parameters
$name : string

Name der Eigenschaft

Return values
boolean

rename()

Datei im Dateisystem umbenennen. Das Dateiobjekt hat danach den neuen Namen. Das Verzeichnis wird vom aktuellen Objekt genommen.

public rename(string $name) : File
Parameters
$name : string

Neuer Name der Datei

Tags
throws
IOException
Return values
File

setDirecotory()

public setDirecotory([Directory $directory = null ]) : File
Parameters
$directory : Directory = null
Tags
deprecated

since version 20190916

Return values
File

Dieses Objekt

setDirectory()

Neues Verzeichnis setzen.

public setDirectory([Directory $directory = null ]) : File
Parameters
$directory : Directory = null
Return values
File

Dieses Objekt

analyzeAndAssign()

Analysieren

protected analyzeAndAssign(string $file) : void

Interne Funktion zum analysieren des Dateipfades

Wird ein anderes als Protokoll als file: (zum Beispiel phar:) angegeben, so wird diese in der Protokoll-Eigenscahft gespeichert. Das file: Protokoll wird ignoriert und abgeschnitten, da es redundant ist.

Parameters
$file : string

Dateiname mit Pfadangabe

Tags
throws
MalformedFileException

Geworfen, wenn der Pfad falsch ist.

checkAndAdjustSerialisation()

Dealing with versions

protected checkAndAdjustSerialisation(array $serialization) : array<string|int, mixed>

This method checks an object and ideally repairs older copies. If an old copy cannot be restored be restored, an exception is thrown.

This method must be overridden by the derived classes. be overridden. In the derived class, * the parent method should be called. the parent method should be called.

Parameters
$serialization : array

Daten des serialisiertes Objekts

Tags
throws
UnserializeException

Keine Übereinstimmung

Return values
array<string|int, mixed>

        
On this page

Search results