mening / suggesties

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Grizz

Grizz

10/12/2007 22:06:00
Quote Anchor link
Ik heb net een simpel script in OO geschreven..
zouden jullie een mening of suggestie kunnen geven?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php    

class getFiles{

    private $folder;
    private $extension;
    private $retType;
    public  $files = array();

    function
__construct($folder, $extension, $retType){
        if( !empty($folder) && !empty($extension) && !empty($retType) ){
            $this->folder = $folder;
            $this->extension = $extension;
            $this->retType = $retType;
        }
    
         else
        {
            die(' <font color="#FF0000"> One or more constructor arguments are missing! </font> ');
        }
    }

    function
returnFiles(){
        if( $dir = @opendir($this->folder) ){
            while( FALSE !== ($file = readdir($dir)) ){
            $getFile = $this->folder . '/' . $file;
            $getExtention = pathinfo($getFile);
            $getExtention['extension'] = !empty($getExtention['extension']) ? $getExtention['extension'] : '';
                if( $getExtention['extension'] == $this->extension ){
                    $this->files[] = $file;
                }
            }
closedir( $dir );
        }

        if( count($this->files) != NULL ){
            return $this->files;
        }

         else
        {
            die(' <font color="#FF0000"> Ooops! something must have gone wrong! make sure that you selected the right path and or extension ( '. $this->folder .' => '. $this->extension .' ) </font> ');
        }        
    }
    
    function
__destruct(){
        // print('X_x');
    }
    
}


$obj = new getFiles('public_html/public_html','php','1');

?>
 
PHP hulp

PHP hulp

08/09/2024 02:08:10
 
M Ypma

M Ypma

10/12/2007 22:56:00
Quote Anchor link
je bent goed opweg, al zitten er wel wat rare toepassingen in...
een kleine opsomming:
- die()... door een fout in deze klasse zou je je hele applicatie dood gooien? dat lijkt me iets te grof.
- je klasse naam klinkt als een functie... ik gebruik altijd een hoofdletter voor mijn klasse namen... Files zou dus toepasselijker zijn.
- de functie returnFiles heeft geen verwachtbaar resultaat...deze returned of een array of helemaal niks?... dat is ook best slordig en zeer ongebruikelijk in het OO programmeren.
- en waarom is je files attribute public? je wilt toch niet dat deze zomaar beinvloedt kan worden?

Tot zover even mijn eerste indruk/kritiek.
Maar ga vooral door met proberen... je bent goed opweg:)
 
Grizz

Grizz

10/12/2007 23:12:00
Quote Anchor link
heb de code aangepast, is het zo beter?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php

class getFiles{

    private $folder;
    private $extension;
    private $files = array();

    function
__construct($folder, $extension){    
        
        if( !empty($folder) && !empty($extension) ){
            $this->folder = $folder;
            $this->extension = $extension;
        }
        
    }

    function
returnFiles(){
        
        if( $dir = @opendir($this->folder) && $constructorError != TRUE){
            while( FALSE !== ($file = readdir($dir)) ){
            
             $getFile = $this->folder . '/' . $file;
             $getExtention = pathinfo($getFile);
             $getExtention['extension'] = !empty($getExtention['extension']) ? $getExtention['extension'] : NULL;
                
                if( $getExtention['extension'] == $this->extension ){
                    $this->files[] =  $this->folder . '/' . $file;
                }
            }
closedir( $dir );
        }

        
        if( count($this->files) != NULL ){
            return $this->files;
        }

         else
        {
            return (' <font color="#FF0000"> Ooops! something must have gone wrong! make sure that you selected the right path and or extension! </font> ');
        }        
    }    
    
    function
__destruct(){
        // print('X_x');
    }
    
}


?>
 
Terence Hersbach

Terence Hersbach

11/12/2007 00:42:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
       if( !empty($folder) && !empty($extension) && !empty($retType) ){
            $this->folder = $folder;
            $this->extension = $extension;
            $this->retType = $retType;
        }
    
         else
        {
            throw new Exception('Er is een fout opgetreden met de constructor.');
        }

?>

als je iets gooit moet je het ook weer opvangen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
    try {
        $var = new getFiles();
    }

    catch (Exception $e)
    {

        echo $e;
    }

?>


dit zal dus een foutmelding teruggeven die jij gemaakt hebt.

verdere tip: gebruik geen html in een class. Ik bepaal zelf wel hoe ik het op het scherm wil hebben staan. (oftewel: een class zou je in principe op elke site weer opnieuw aan kunnen roepen zonder hem te wijzigen)
Gewijzigd op 01/01/1970 01:00:00 door Terence Hersbach
 
PHP erik

PHP erik

11/12/2007 01:34:00
Quote Anchor link
Je kunt het ongeveer zo doen. Ik heb nu voor getFiles() en buildFileList() 2 aparte functies, omdat je dan meerdere malen de bestanden kan ophalen met getFiles() zonder dat hij steeds opnieuw de directory hoeft te doorlopen. Ook kun je met de getters en setters waarden ophalen en opnieuw setten om bijvoorbeeld opnieuw de lijst op te bouwen met een andere directory. Het kan ook op een heel andere manier dan ik nu heb gedaan (het is maar wat je doel is), maar de manier hoe ik Exceptions gebruik is wel aan te raden.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php

class FileException extends Exception { }

class File
{
    private $folder;
    private $extension;
    private $files;
    
    public function __construct($folder, $extension)
    {

        if (empty($folder)) {
            throw new FileException('Geen folder meegegeven in ' . __CLASS__ . '-constructor');        
        }

        
        if (empty($extension)) {
            throw new FileException('Geen extensie meegegeven in ' . __CLASS__ . '-constructor');        
        }

        
        $this->folder = $folder;
        $this->extension = $extension;
    }

    
    public function buildFileList()
    {

        $dir = @opendir($this->folder);
        
        if (!$dir) {
            throw new FileException('Openen van directory mislukt in ' __CLASS__);    
        }

        
        $this->files = array();

        // while (blahblah) { $this->files[] = $file } etc
        
        // geen return nodig

    }
    
    public function getFiles()
    {

        if (empty($this->files)) {
            $this->buildFilesList();
        }

        
        return $this->files;
    }

    
    public function getFolder()
    {

        return $this->folder;
    }

    
    public function getExtension()
    {

        return $this->extension;
    }

    
    public function setFolder($folder)
    {

        $this->folder = $folder;
    }

    
    public function setExtension($extension)
    {

        $this->extension = $extension;
    }
}


try {
    $oFile = new File('phphulp', 'jpg');
    $aLijst = $oFile->getFiles();
    
    if (empty($aLijst)) {
        echo 'Geen bestanden gevonden';    
    }
else {
        foreach ($aLijst as $file) {
            echo $file . '<br />';    
        }    
    }
}
catch (FileException $e) {
    echo 'Er is iets misgegaan: <br />';
    echo $e->getMessage();
    /* deze laatste echo kun je misschien beter anders doen, omdat je niet wil
       dat uiteindelijke bezoekers een gedetailleerde error-melding krijgen */

}

?>
Gewijzigd op 01/01/1970 01:00:00 door PHP erik
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.