Catchable fatal error: could not be converted to string

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Ewergreen php

ewergreen php

15/12/2010 18:32:15
Quote Anchor link
Onderstaande geeft de volgende error:
Quote:
Catchable fatal error: Object of class PclZip could not be converted to string in C:\xampp\htdocs\xampp\AutoDir\index.php on line 59

Iemand enig idee hoe ik dit eindelijk opgelost krijg?

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
<html>
<head>
<?php require_once("filesize_lib.php"); ?>
<?php require_once("pclzip.lib.php");?>

<style type="text/css">

.readme{
width:500px;
height:150px;
background: silver;
overflow-x: hidden;
overflow-y: scroll;
}


</style>

</head>
<body>
<?php
    $readme
= "/readme.txt";
    $download = "downloads";
  // Openen
    $dir = new DirectoryIterator('.');
  // Doorlopen
?>

<table width="960px" border="1px"><tr><td width="165px"><strong>Name</strong></td><td width="50px"><strong>Type</strong></td><td width="70px"><strong>Size</strong></td><td width="125px"><strong>Last Modified</strong></td><td><strong>Short description</strong></td><td width="50px"><strong>Download</strong></td></tr>
<?php
$zip
= new PclZip("tmp/archief.zip");
    foreach ($dir as $file)
      {

        if (! $file->isDot()
               &&
$file != ".."
            && $file != "index.php"
            && $file != "filesize_lib.php"
            && $file != "downloads"
            )
        {
        ?>
<tr><td><?php
                  echo '<a href="'.$file.'">'.$file.'</a>';
                ?>
</td><td><?php
                echo filetype($file);
                  ?>
</td><td><?php
                  echo fileORdirSize($file).'<br/>';
                 ?>
</td><td><?php
                  echo date("M j, Y", filemtime($file));    
                  ?>
</td><?php
                      if (filetype($file) == "dir"){
                          ?>
                  
                          <td><div class="readme"><?php
                          echo file_get_contents($file.$readme);    
                          ?>
</div></td><?php
                      } else {
                          ?>
<td>Files don't have descriptions, but can be tested directly from this page.</td><?php
                      }
                  ?>
<td><?php    
                        if($zip->add($file->getFilename()) == 0)
                          die("Error : " . $zip->errorInfo(false));                
                  echo '<a href="'.$zip.'">'.$zip.'</a>';
                  ?>
</td></tr><?php
        }
  }

?>

</table>
</body>
</html>
Gewijzigd op 16/12/2010 09:54:58 door Ewergreen php
 
PHP hulp

PHP hulp

17/05/2024 03:06:49
 
- Ariën  -
Beheerder

- Ariën -

15/12/2010 19:09:55
Quote Anchor link
Ik tel geen 59 regels code in je script.
 
Pieter Jansen

Pieter Jansen

15/12/2010 19:26:29
Quote Anchor link
De fout is vrij simpel. Je geeft ERGENS een object mee ( je PclZip object ) waar eigenlijk een string verwacht wordt. Er zit geen standaard return waarde voor een String in. Als je de juiste regelcode aan ons geeft, kunnen we eens kijken waar je de fout in gaat.
 

15/12/2010 20:04:12
Quote Anchor link
- Aar - op 15/12/2010 19:09:55:
Ik tel geen 59 regels code in je script.


Require is een vorm van include. Het enige verschil is dat require verplicht is (het script stopt als er wat mis is), bij include is dat niet het geval.
Zoals de naam al zegt wordt er bij een include het bestand opgenomen. De aantal regels van de include moet je dus vanaf de plek van de include optellen.
Is er op regel 2 van bestand A een include van 2 regels? Dat betekend dan dat de volgende regel van bestand A op regel 5 staat. Eerst stond de volgende regel op regel 3. Toen zijn er 2 regels bij gekomen. 2+3 = 5.

Nog even een voorbeeldje van hoe __toString():
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
<?php
class TestClasseZonderToString {
    public $blaat;
    function
__construct($blaat) {
        $this->blaat = $blaat; // Veld zetten
    }
}


class TestClassMetToString extends TestClasseZonderToString {
    function
__construct($blaat) {
        parent::__construct($blaat);
    }


    public function __toString()
    {

        return $this->blaat;
    }
}


$oMetToString = new TestClassMetToString('Blaat');
$oZonderToString = new TestClasseZonderToString('blup');
echo $oMetToString;
echo $oZonderToString;

/* Dit levert:
Blaat
( ! ) Catchable fatal error: Object of class TestClasseZonderToString could not be converted to string
*/

?>

language.oop5.magic#language.oop5.magic.tostring
 
Ewergreen php

ewergreen php

16/12/2010 09:58:08
Quote Anchor link
Ik had een stukje van de code weg gehaald om het overzichtelijker te maken, maar dat was dus duidelijk geen goed idee. Bij deze is het bestand bovenaan terug het volledige bestand.

Hieronder ook het stukje in de pclzip.lib library waar ik denk dat het fout gaat.
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
<?php    // ----- Init
    $v_string_list = array();
    $v_att_list = array();
    $v_filedescr_list = array();
    $p_result_list = array();

    // ----- Look if the $p_filelist is really an array
    if (is_array($p_filelist)) {

      // ----- Look if the first element is also an array
      //       This will mean that this is a file description entry

      if (isset($p_filelist[0]) && is_array($p_filelist[0])) {
        $v_att_list = $p_filelist;
      }


      // ----- The list is a list of string names
      else {
        $v_string_list = $p_filelist;
      }
    }


    // ----- Look if the $p_filelist is a string
    else if (is_string($p_filelist)) {
      // ----- Create a list from the string
      $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist);
    }


    // ----- Invalid variable type for $p_filelist
    else {
      PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist");
      return 0;
    }
?>
 

16/12/2010 11:05:07
Quote Anchor link
Zie regel 59 (zoals de error aangeeft) van jou script.
Zie dan mijn voorbeeld.
En concludeer dan dat wat je doet niet klopt.
De PclZip klasse heeft geen magic __toString methode.
 
Ewergreen php

ewergreen php

16/12/2010 11:11:01
Quote Anchor link
Thanks Karl! Ik ga nog eens een poging doen. Ik was eigenlijk gewoon iets basis aan het programmeren om een beetje te oefenen, maar uiteraard weer te ver gegaan. Ik zit nu iets verder dan mijn vaardigheden me toelaten, maar uiteraard wil ik nu wel de oplossing zien... .

Toevoeging op 16/12/2010 11:29:09:

Ok, hier kom ik niet uit. Heb op php.net opgezocht wat de magic __toString methode doet en dan geprobeerd deze in mijn pclzip.lib.php file te plaatsen, maar dit maakt het precies erger. Simpelweg: dit is nog te moeilijk voor mij.

Enige kans dat je even kunt zeggen wat ik precies moet doen, dan is het tenminste afgewerkt zoals ik het gehoopt had.
 



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.