2012-04-27 7 views
2

가능한 중복에 문자열로 변환 할 수 없습니다
Object could not be converted to string?객체는

내가 내 이미지에 임의의 제목을 작성해야하고 나는 오류가 발생했습니다

MPRandomText 클래스의 개체를 42 번째 줄에있는 C : \ Program Files (x86) \ EasyPHP-5.3.9 \ www \ dir.php의 문자열로 변환 할 수 없습니다.

어떻게하면 html 이미지 제목에 임의의 텍스트를 포함시킬 수 있습니까?

class MPRandomText 
    { 
    var $filepath; 
    var $sepstring; 
    var $fixchar; 
    var $textfix; 
    var $contents; 
    var $random; 
    var $errors; 
    // initiate object and start functions 
    function MPRandomText($filepath, $sepstring, $textfix) 
     { 
     $this->filepath = $filepath; 
     $this->textfix = $textfix; 
     $this->sepstring = $sepstring; 
     $this->errors = ""; 
     $this->contents = ""; 
     $this->FileToString(); 
     } 
    // read file contents into string variable 
    function FileToString() 
     { 
     if (!$this->filepath || !file_exists($this->filepath)) 
      $this->errors = "Could not find text file at ".$this->filepath; 
      else { 
      @$filePointer = fopen($this->filepath, "r"); 
      if (!$filePointer) $this->errors = "Text file could not be opened."; 
      if ($this->errors == "") 
       { 
       $this->contents = fread($filePointer, filesize($this->filepath)); 
       fclose($filePointer); 
       if (!$this->textfix) $this->HTMLContent(); 
       $this->MakeArray(); 
       } 
      } 
     } 
    // if importing an HTML page, drop everything outside of (and including) the <body> tags 
    function HTMLContent() 
     { 
     $test = stristr($this->contents, "<body"); 
     if ($test !== false) 
      { 
      $test = stristr($test, ">"); 
      if ($test !== false) 
       { 
       $test = str_replace("</BODY>", "</body>", $test); 
       $test = explode("</body>", substr($test, 1)); 
       if (count($test) > 1) $this->contents = $test[0]; 
       } 
      } 
     } 
    // convert the file text into a list using separation character 
    function MakeArray() 
     { 
     $array = explode($this->sepstring, $this->contents); 
     if (count($array) > 0) 
      { 
      $this->contents = $array; 
      $this->CleanTextList(); 
      } else $this->errors = "Text file contents are empty or could not be read."; 
     } 
    // clean up the list of empty values and extra white space 
    function CleanTextList() 
     { 
     $result = array(); 
     if (is_array($this->contents)) 
      { 
      for ($n=0; $n<count($this->contents); $n++) 
       { 
       $string = trim($this->contents[$n]); 
       $test = trim($string."test"); 
       if (!empty($string) AND $test != "test") $result[] = $string; 
       } 
      if (count($result) > 0) 
       { 
       $this->contents = $result; 
       $this->RandomString(); 
       } 
      } 
     } 
    // get random text string from list 
    function RandomString() 
     { 
     reset($this->contents); 
     srand((double) microtime() * 1000000); 
     shuffle($this->contents); 
     $this->random = $this->contents[0]; 
     } 
    // send finished results to be printed into HTML page 
    function GetResults() 
     { 
     if ($this->errors != "") return $this->errors; 
      else 
      { 
      if ($this->textfix == true) $this->random = htmlentities($this->random); 
      return $this->random; 
      } 
     } 
    } 

//------------------------------------------------------------------------------------------------- 
// FUNCTION AND VARIABLE TO CREATE RANDOM TEXT INSTANCE 
//------------------------------------------------------------------------------------------------- 

// create variable to store instance references 
$MPRandomTextHandles = array(); 

// function to create new handle and import random text 
function MPPrintRandomText($MPTextFile = "random.txt", $MPSepString = "*divider*", $MPTextToHTML = false) 
    { 
    global $MPRandomTextHandles; 
    for ($n=0; $n<250; $n++) 
     { 
     if (!isset($MPRandomTextHandles[$n])) 
      { 
      $MPRandomTextHandles[$n] = new MPRandomText($MPTextFile, $MPSepString, $MPTextToHTML); 
      break; 
      } 
     } 
    print($MPRandomTextHandles[$n]->GetResults()); 
    return $MPRandomTextHandles[$n]; 
    } 


    /* Начало конфигурации */ 
$thumb_directory = 'img/thumbs'; 
$orig_directory = 'img/imag'; 
/* Конец конфигурации */ 
$allowed_types=array('jpg','jpeg','gif','png'); 
$file_parts=array(); 
$ext=''; 
$title=''; 
$title1='גילוף פסלים בעץ'; 
$i=0; 


/* Открываем папку с миниатюрами и пролистываем каждую из них */ 
$dir_handle = @opendir($thumb_directory) or die("There is an error with your 
image directory!"); 
$i=1; 

while ($file = readdir($dir_handle)) 
{ 
/* Пропускаем системные файлы: */ 
if($file=='.' || $file == '..') continue; 
$file_parts = explode('.',$file); 
$ext = strtolower(array_pop($file_parts)); 

/* Используем название файла (без расширения) в качестве названия изображения: */ 
// $title = implode('.',$file_parts); 
// $title = htmlspecialchars($title); 
include_once("GetRandomText.php"); 
$MPTextFile = "random.txt"; 
$MPSepString = "*divider*"; 
$MPTextToHTML = false; 
$title = MPPrintRandomText($MPTextFile, $MPSepString, $MPTextToHTML); 

/* Если расширение разрешено: */ 
if(in_array($ext,$allowed_types)) 
{ 

/* Выдаем каждое фото: */ 
echo '<li> 
     <a href="'.$orig_directory.'/'.$file.'" rel="lightbox[pasel]"> 
      <img title="'.$title.'" src="'.$thumb_directory.'/'.$file.'" width="72" height="72" alt="גילוף פסלים בעץ" /> 
     </a> 
    </li>'; 
} 
} 
/* Закрываем папку */ 
closedir($dir_handle); 

답변

1

$ title은 MPRandomText의 인스턴스입니다. 출력에서는 $ title을 연결하지만 MPRandomText는 __toString()을 구현하지 않으므로 문자열로 변환 할 수 없습니다.

<?php 
$title = MPPrintRandomText($MPTextFile, $MPSepString, $MPTextToHTML); 
// MPPrintRandomText returns an instance of MPRandomText 

/* Если расширение разрешено: */ 
if(in_array($ext,$allowed_types)) 
{ 

/* Выдаем каждое фото: */ 
echo '<li> 
    <a href="'.$orig_directory.'/'.$file.'" rel="lightbox[pasel]"> 
     <img title="'.$title.'" src="'.$thumb_directory.'/'.$file.'" width="72"  height="72" alt="גילוף פסלים בעץ" /> 
    </a> 
</li>'; 
// concatenating $title here will fail because MPRandomText does not implement __toString() 
} 
} 
?> 
+0

어떻게 문자열로 변환 할 수 있습니까? –

+0

MPRandomText에 __toString() 메서드를 구현하거나 원하는 문자열을 사용하십시오. $ title-> RandomString(). – Polygnome

+0

나는 그것이 작동하게하는 방법을 이해할 수 없다 :( –