[1.16] tools/filesystem

Dieser Bereich dient dazu, neue Features zu diskutieren und für die Entwicklung zu dokumentieren. // This area is dedicated to new features including proposals and documentation.
TipTop
Beiträge: 193
Registriert: 25.08.2011, 22:37:08
Wohnort: Klagenfurt, Österreich
Kontaktdaten:

Re: [1.16] tools/filesystem

Beitrag von TipTop » 25.07.2012, 19:07:01

Hier mal die Liste aller Methoden.

File::copyTo() (erfolgreich getestet)
File::moveTo()
File::delete() (erfolgreich getestet)
File::getContent() (erfolgreich getestet)
File::getSize() (erfolgreich getestet)
File::getName() (erfolgreich getestet)
File::getBasePath() (erfolgreich getestet)
File::getPath() (erfolgreich getestet)
File::getPermissons() (erfolgreich getestet)
File::getOwner() (erfolgreich getestet)
File::getParentFolder() (erfolgreich getestet)
File::isReadable() (erfolgreich getestet)
File::isWriteable() (erfolgreich getestet)
File::renameTo() (erfolgreich getestet)
File::changeOwnerTo()
File::changePermissionsTo()
File::getContentType()
File::getExtension() (erfolgreich getestet)
File::writeContent() (erfolgreich getestet)
File::appendContent()
File::prependContent()
File::download()


Folder::copyTo() (erfolgreich getestet)
Folder::moveTo()
Folder::delete() (erfolgreich getestet)
Folder::getContent() (erfolgreich getestet)
Folder::getSize()
Folder::getName() (erfolgreich getestet)
Folder::getBasePath() (erfolgreich getestet)
Folder::getPath() (erfolgreich getestet)
Folder::getPermissons()
Folder::getOwner()
Folder::getParentFolder() (erfolgreich getestet)
Folder::isReadable() (erfolgreich getestet)
Folder::isWriteable() (erfolgreich getestet)
Folder::renameTo() (erfolgreich getestet)
Folder::changeOwnerTo()
Folder::changePermissionsTo()

Am Wochenende teste ich die restlichen Methoden, falls aber jemand schon davor dazukommt, wäre das natürlich klasse, dann bitte aber auch hier kurz Bescheid sagen.

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: [1.16] tools/filesystem

Beitrag von Megger » 25.07.2012, 20:20:59

Gibt es eine Flock unterstützung?
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

TipTop
Beiträge: 193
Registriert: 25.08.2011, 22:37:08
Wohnort: Klagenfurt, Österreich
Kontaktdaten:

Re: [1.16] tools/filesystem

Beitrag von TipTop » 25.07.2012, 22:35:11

Megger hat geschrieben:Gibt es eine Flock unterstützung?
Nein, nocht nicht. Habe mit dem Lock-Mechanismus bisher noch nicht gearbeitet, finde das auch nicht ganz so trivial. Wie und an welchen Stellen müsste man flock() verwenden?

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: [1.16] tools/filesystem

Beitrag von dr.e. » 26.07.2012, 08:03:42

@TipTop: hast du manuell getestet? Falls ja, bietet sich an, dass dafür jemand Unit Tests schreibt.
Viele Grüße,
Christian

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: [1.16] tools/filesystem

Beitrag von Megger » 27.07.2012, 13:02:18

Mhhh flock() funktioniert nur teilweise unter Windows, dass ja natürlich nicht so optimal! Da nimmt man dann doch besser eine abgeleitete Klasse und passt es sich entsprechend an!
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

TipTop
Beiträge: 193
Registriert: 25.08.2011, 22:37:08
Wohnort: Klagenfurt, Österreich
Kontaktdaten:

Re: [1.16] tools/filesystem

Beitrag von TipTop » 29.07.2012, 14:02:42

dr.e. hat geschrieben:@TipTop: hast du manuell getestet? Falls ja, bietet sich an, dass dafür jemand Unit Tests schreibt.
Hi,

ja, hab den CMS-ExtensionManager auf die neue API angepasst und das hat problemlos funktioniert. Werde aber in den kommenden Tagen die Filesystem-Komponente nochmal automatisiert testen.

Grüße
Nico

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: [1.16] tools/filesystem

Beitrag von dr.e. » 29.07.2012, 14:33:52

Hi Nico,

sehr schön, dann werde ich anschließend meine Projekte mal umstellen.
Viele Grüße,
Christian

TipTop
Beiträge: 193
Registriert: 25.08.2011, 22:37:08
Wohnort: Klagenfurt, Österreich
Kontaktdaten:

Re: [1.16] tools/filesystem

Beitrag von TipTop » 07.08.2012, 14:16:34

Tests sind abgeschlossen.

Hier der letzte Stand: http://www.webrex.org/filesystem.zip

Grüße
Nico

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: [1.16] tools/filesystem

Beitrag von dr.e. » 07.08.2012, 22:31:59

Hallo Nico,

danke für deine Arbeit. Ich habe die Dateien ins SVN integriert.

Meine Projekte habe ich leider noch nicht umstellen können, steht aber auf der TODO-Liste oben.

Aus meiner Sicht ist nun nur noch die Dokumentation zu verfassen.
Viele Grüße,
Christian

TipTop
Beiträge: 193
Registriert: 25.08.2011, 22:37:08
Wohnort: Klagenfurt, Österreich
Kontaktdaten:

Re: [1.16] tools/filesystem

Beitrag von TipTop » 08.08.2012, 12:30:18

Hi

Haben sich doch noch 2 Bugs eingeschlichen, habe Sie aber bereits ausgebessert.

Doku: http://www.webrex.org/webrex/media/filesystem.pdf
Die Kapitel "API für Dateien" und "API für Verzeichnisse" werde ich aber noch zusammenfassen, da sie zum Großteil identisch sind.

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: [1.16] tools/filesystem

Beitrag von dave » 09.08.2012, 09:17:14

Habe mir die Diku gestern angesehen. Finde sie sehr gut, einfach, kompakt.

Einzig eine Implementierung mit dem (DI)ServiceManager würde mich noch interessieren.

Ansonsten tip top! ;)

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: [1.16] tools/filesystem

Beitrag von dr.e. » 10.08.2012, 09:52:01

Hallo Nico,

ich habe mir die Doku ebenfalls durchgelesen und kann mich meinem Vorredner anschließen. Was die Implementierung angeht, so würde ich eher auf

Code: Alles auswählen

import('tools::filesystem', 'File');
$file = new File('path/to/my/new/file/filename.txt');
$file->xyz(); 
setzen. Der Konstruktor sollte diejenigen Argumente tragen, ohne die ein File nicht "leben" kann. Welche Gründe gab es, dies in eigenen Methoden zu tun?
Viele Grüße,
Christian

TipTop
Beiträge: 193
Registriert: 25.08.2011, 22:37:08
Wohnort: Klagenfurt, Österreich
Kontaktdaten:

Re: [1.16] tools/filesystem

Beitrag von TipTop » 10.08.2012, 15:36:13

Hallo zusammen,
dr.e. hat geschrieben:Der Konstruktor sollte diejenigen Argumente tragen, ohne die ein File nicht "leben" kann.
Hatte ich zuerst auch so gehandhabt - open() und create() habe ich dann nur implementiert, damit Folder & File Objekte als Services in ein Service injiziert werden können. Habe die Variante mit dem Konstruktor aber gespeichert, kann diese auch gleich mal einchecken.

Ich habe mir noch überlegt, ob eine Archiv-Untersützung sinnvoll wäre. Habe dazu jetzt mal das Diagramm erweitert: http://www.webrex.org/webrex/media/filesystem.jpg
Was haltet Ihr davon?

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: [1.16] tools/filesystem

Beitrag von dr.e. » 10.08.2012, 16:04:25

Hallo Nico,
Hatte ich zuerst auch so gehandhabt - open() und create() habe ich dann nur implementiert, damit Folder & File Objekte als Services in ein Service injiziert werden können.
Das ist ein guter Punkt! Dann würde ich jedoch das Interface wie folgt erwarten:

Code: Alles auswählen

// als Service
$file = new File();
$file->setName('/foo/bar/baz.txt');

// nativ
$file = new File('/foo/bar/baz.txt'); 
Ich möchte bei Injektion eines File-Objektes dieses ja nicht erst erzeugen (create()) müssen.
Viele Grüße,
Christian

TipTop
Beiträge: 193
Registriert: 25.08.2011, 22:37:08
Wohnort: Klagenfurt, Österreich
Kontaktdaten:

Re: [1.16] tools/filesystem

Beitrag von TipTop » 10.08.2012, 16:40:20

Hi :)
dr.e. hat geschrieben:Hallo Nico,
Hatte ich zuerst auch so gehandhabt - open() und create() habe ich dann nur implementiert, damit Folder & File Objekte als Services in ein Service injiziert werden können.
Das ist ein guter Punkt! Dann würde ich jedoch das Interface wie folgt erwarten:

Code: Alles auswählen

// als Service
$file = new File();
$file->setName('/foo/bar/baz.txt');

// nativ
$file = new File('/foo/bar/baz.txt');  
Ich möchte bei Injektion eines File-Objektes dieses ja nicht erst erzeugen (create()) müssen.
Also die setter-Methode müsste wenn setPath() heißen, da das Name-Attribut der File-Klasse für den Namen der Datei (also lediglich filename.ext) verwendet wird. In der File- und Folder-Klasse wird nicht der komplette Pfad gespeichert, sondern nur der Basis-Pfad und der Dateiname/Verzeichnisname. Die Methode getPath() verbindet beide Werte zum kompletten Pfad und gibt diesen zurück.

setPath() halte ich eher für ungeeignet, da 1. kein path-Klassen-Attribut existiert und 2. man von einer setter-Methode nicht erwartet, dass Sie ein DO mit sämtlichen Daten (filename, basepath, mimetype, content...) befüllt, oder?
Was spricht denn gegen File::open()?

Die Funktionalität der create-Methode() aufjedenfall mal in den Konstruktor verschieben, korrekt?



//Edit: oder hast Du dir das so vorgestellt:

Code: Alles auswählen

// service manager erledigt foglendes:
$file = new File();
$file->setPath('path/to/my/file.txt');

// und im Objekt, in welches diese File-DO injiziert wurde:
$file->open();
 
?

Gesperrt

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast