ik heb een vraag ik moet in de class batch dit maken maar ik kom er echt niet uit.

Deze moet ik laten returnen hebben jullie een idee hoe ik dat moet doen?


dit moet ik doen:
Public methods

getCircleFolder
Return de circle folder path.


getSquareFolder
Return de vierkant folder path.




hier staat mijn path:

[code­]

$upload_files[] = [

'square' => $destination . '/' . $_FILES['file']['name'][$i],
'circle' => $locatie . '/' . topng ($_FILES['file']['name'][$i])
];

[/code­]
Bekend met classes? Want ik zie weinig van je methods als code.
Maar met return kan je iets returnen.

Daarna moet je het zelf even echo'en of doorgeven aan een andere functie.
- Ariën - op 10/10/2019 14:31:23

Bekend met classes? Want ik zie weinig van je methods als code.
Maar met return kan je iets returnen.

Daarna moet je het zelf even echo'en of doorgeven aan een andere functie.


ja ik moet een class maken op een andere file en dan moet ik daar de return uitvoeren om de folder path te returnen
Schoolopdracht?
Ozzie PHP op 10/10/2019 16:46:51

Schoolopdracht?


nee voor iets wat ik aan het proberen ben
>> nee voor iets wat ik aan het proberen ben

Dat klinkt vaag...

Maar goed. Zie een class als een apart stukje programma, een zelfstandig ding wat gescheiden is van de rest van je applicatie. Het eerste wat je jezelf moet afvragen:

Wat is de taak van de class die ik ga schrijven?


een heel erg simpele class zou er zo uit kunnen zien:

<?php

class Folder
{
protected $path;

// De constructor
public function __construct($folder)
{
$this->setFolder($folder);
}

// getter
function getPath() {
return $this->path;
}

//setter
function setPath($path) {
$this->path = $path;
}
}

// maak een nieuwe INSTANTIE van Folder aan
$circleFolder = new Folder( $locatie . '/' . topng ($_FILES['file']['name'][$i]) );

// gebruik de METHOD getFolder()
echo $circleFolder->getPath();

// maak een tweede instantie aan
$squareFolder = new Folder( $destination . '/' . $_FILES['file']['name'][$i] );

// gebruik de METHOD getFolder()
echo $squareFolder->getPath();
?>
Zie de getter en setter als de bezorg- en afhaalbalie via de getters en setters communiceer je met je class. Zoals je ziet is $path protected. Deze kun je van buiten de class dan ook niet rechtstreeks lezen of schrijven. Je moet het dan dus wel via de getter en setter doen.

Een goed gebruik is om iedere class in een apart bestand te laten met dezelfde naam als de class heeft. de classnaam Folder zou dan dus in Folder.php opgeslagen worden.

Deze class heeft als enigste taak om het 'pad' te onthouden en is dus wel heel erg basic maar je kan de functionaliteit van de class uitbreiden. Het is wel handig als je iets leest over constructors en public/protected/private properties en methods.
Vervolg van dit topic

Hier gaf je nog aan dat het wel om huiswerk ging ;-) Heb je dit nu werkend?

En wat ik al aangaf, kies een taal. Ik zie locatie, destination, vierkant, square, etc. Hoe verwarrend wil je het maken?
@topicstarter
Ik snap de omschrijving van wat je probeert te bereiken niet. Het helpt ook niet dat de zinnen waarin je dit formuleert letterlijk kop noch staart hebben.

Is het de bedoeling dat je iets opsteekt van:
- verbanden tussen wiskundige figuren en hoe je dit tot iets object georiënteerds combineert (inheritance?)
- het uploaden van bestanden
- directorystructuren
- arrays
?

Het lijkt mij sterk dat je alles in 1x dient te combineren in één stuk code (of klasse), althans, ik zie niet hoe al deze componenten zich onderling verhouden. Ik denk ook dat het je meer helpt als je dit opdeelt in stukken, in plaats van dat je alles in 1x probeert te doen.

Met een class bundel je vaak een aantal samenhangende operaties tot één werkend geheel waarmee je dingen kunt doen. Ik zie niet helemaal wat de gemeenschappelijke noemer zou moeten zijn in het bovenstaande geheel, en volgens mij is het (dus) ook een combinatie van zaken, in plaats van één magische (gigantische?) klasse die alles doet. Dat is niet het idee van object georiënteerd programmeren.
Michael - op 10/10/2019 18:47:15

Vervolg van dit topic

Hier gaf je nog aan dat het wel om huiswerk ging ;-) Heb je dit nu werkend?

En wat ik al aangaf, kies een taal. Ik zie locatie, destination, vierkant, square, etc. Hoe verwarrend wil je het maken?


yes het werkt nu allemaal maar nu wil ik wat beter worden en probeer ik dingen zelf uit



[size=xsmall]Toevoeging op 16/10/2019 11:20:12:[/size]

Frank Nietbelangrijk op 10/10/2019 18:31:26

>> nee voor iets wat ik aan het proberen ben

Dat klinkt vaag...

Maar goed. Zie een class als een apart stukje programma, een zelfstandig ding wat gescheiden is van de rest van je applicatie. Het eerste wat je jezelf moet afvragen:

Wat is de taak van de class die ik ga schrijven?


een heel erg simpele class zou er zo uit kunnen zien:

<?php

class Folder
{
protected $path;

// De constructor
public function __construct($folder)
{
$this->setFolder($folder);
}

// getter
function getPath() {
return $this->path;
}

//setter
function setPath($path) {
$this->path = $path;
}
}

// maak een nieuwe INSTANTIE van Folder aan
$circleFolder = new Folder( $locatie . '/' . topng ($_FILES['file']['name'][$i]) );

// gebruik de METHOD getFolder()
echo $circleFolder->getPath();

// maak een tweede instantie aan
$squareFolder = new Folder( $destination . '/' . $_FILES['file']['name'][$i] );

// gebruik de METHOD getFolder()
echo $squareFolder->getPath();
?>
Zie de getter en setter als de bezorg- en afhaalbalie via de getters en setters communiceer je met je class. Zoals je ziet is $path protected. Deze kun je van buiten de class dan ook niet rechtstreeks lezen of schrijven. Je moet het dan dus wel via de getter en setter doen.

Een goed gebruik is om iedere class in een apart bestand te laten met dezelfde naam als de class heeft. de classnaam Folder zou dan dus in Folder.php opgeslagen worden.

Deze class heeft als enigste taak om het 'pad' te onthouden en is dus wel heel erg basic maar je kan de functionaliteit van de class uitbreiden. Het is wel handig als je iets leest over constructors en public/protected/private properties en methods.



bedankt dit heeft geholpen!


[size=xsmall]Toevoeging op 16/10/2019 11:25:39:[/size]

ik wil mijn .zip bestand in een mapje circles krijgen maar ik krijg deze error:https://ibb.co/RjCtP3w
wat heb ik fout gedaan?


mijn code
[code­]
<?php

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

class Batch
{
protected $id;

// De constructor
public function __construct($id)
{
$this->id = $id;
return $this;
}

public function getCircleFolder()
{
return "circles/$this->id/";
}

public function getSquareFolder()
{
return "squares/$this->id/";
}

public function ensureFoldersExist()
{
createDirectory($this->getCircleFolder());
createDirectory($this->getSquareFolder());
return null;
}

public function toZip()
{
$this->ensureFoldersExist();
$obj_zip = new ZipArchive();
$result = $obj_zip->open($this->getCircleFolder().$this->id.".zip", (ZipArchive::CREATE | ZipArchive::OVERWRITE));
if ($result != TRUE) {
//print('Failed with code %d', $result)
} else {
$arr_options = array('add_path' => $this->getCircleFolder(), 'remove_all_path' => TRUE);
$obj_zip->addGlob('*.png', GLOB_BRACE, $arr_options);
$obj_zip->close();
}
}
}


[/code­]
Je mag de foutmelding ook hier delen. Dan hebben andere er nog wat aan als de afbeelding verdwenen is, en dan blijft het forum ook meteen een goede kennisbank.

Ik zet in dat je een volledige pad moet gebruiken.
- Ariën - op 16/10/2019 11:32:07

Je mag de foutmelding ook hier delen. Dan hebben andere er nog wat aan als de afbeelding verdwenen is, en dan blijft het forum ook meteen een goede kennisbank.

Ik zet in dat je een volledige pad moet gebruiken.


bij welke regel?

Reageren