Un método me devuelve un array, cuando debería ser un string.

[email protected] (Pablo Braulio)
Newsgroups php.general.es
Message-ID <[email protected]>
Hola a todos.

Estoy atascado con esto, que no comprendo el porque ocurre.

Es un poco largo de explicar, siento la molestia.

Tengo la siguiente clase:

class ficheros {
	
	protected $files= array('prueba_copia.po');
	protected $dirPath= '../traduc';
	protected $fp= array();
	public $arr_contenido= array();


	private function abrir(){
		foreach($this->files as $file){
			$pathFile= $this->dirPath.'/'.$file;
			
			$this->fp[]= fopen($pathFile, 'r');
			
		}
		return;
	}
	
	//Devuelve un array con indice de línea.
	public function leer(){
		if(empty ($this->fp)){
			$this->abrir();
		}
		
		foreach($this->fp as $open){
			$numLinea= 0;
			
			while (!feof($open)){
				if($contenido= fgets($open)){
					$this->arr_contenido[$numLinea]=$contenido;
					$numLinea++;
				}
			}
			
			fclose($open);
		}
		return $this->arr_contenido;
	}

Lo llamo desde otro archivo y compruebo que muestra con print_r.

require_once 'ficheros.class.php';

$fich= new ficheros();
$fich->leer();

print_r($fich);

El resultado es este:
ficheros Object
(
    [files:protected] => Array
        (
            [0] => prueba_copia.po
        )

    [dirPath:protected] => ../traduc
    [fp:protected] => Array
        (
            [0] => Resource id #6
        )

    [arr_contenido] => Array
        (
            [0] =>      msgstr "O <strong>     linea 1 nome do
parcheesi<strong> vem da palabra <em>pacis/em>, que significa vinte e
cinco <strong>em hindu já</strong> que vinte e cinco eram as conchas
lançadas em cada série."

            [1] => msgstr " Linea 2 Contatta col nostro <a
href='%URL'>servizio all'utente>, indicando i passi che hai fatto fino
ad arrivare qui."

          ......
        )

    [contFich] =>
)

Por otro lado tengo esta otra clase:

class limpiar {
	
	public $trimFile= array();
	
	public function LimpEspInfin($files){
			
		foreach($files as $key=>$file){
			$this->trimFile[]= trim(preg_replace('/\s\s+/', ' ' ,$file));
		}
		return;
			
	}
	
}

Si modifico el archivo donde las llamo:
require_once 'ficheros.class.php';
require_once 'limpiar.class.php';

$fich= new ficheros();

//Quitar espacios al principio y final y tabuladores.
$limpEsp= new limpiar();
$limpEsp->LimpEspInfin($fich->leer());
print_r($limpEsp);

El resultado:

limpiar Object
(
    [trimFile] => Array
        (
            [0] => msgstr "O <strong> linea 1 nome do
parcheesi<strong> vem da palabra <em>pacis/em>, que significa vinte e
cinco <strong>em hindu já</strong> que vinte e cinco eram as conchas
lançadas em cada série."
            [1] => msgstr " Linea 2 Contatta col nostro <a
href='%URL'>servizio all'utente>, indicando i passi che hai fatto fino
ad arrivare qui."
            ......
        )

)

Hasta aquí todo bien, pero el problema es el siguiente:

Añado un método "modificarFich" en la clase ficheros, dejándolo así.

class ficheros {
	
	protected $files= array('prueba_copia.po');
	protected $dirPath= '../traduc';
	protected $fp= array();
	public $arr_contenido= array();
	public $contFich;


	private function abrir(){
		foreach($this->files as $file){
			$pathFile= $this->dirPath.'/'.$file;
			
			$this->fp[]= fopen($pathFile, 'r');
			
		}
		return;
	}
	
	//Devuelve un array con indice de línea.
	public function leer(){
		if(empty ($this->fp)){
			$this->abrir();
		}
		
		foreach($this->fp as $open){
			$numLinea= 0;
			
			while (!feof($open)){
				if($contenido= fgets($open)){
					$this->arr_contenido[$numLinea]=$contenido;
					$numLinea++;
				}
			}
			
			fclose($open);
		}
		return $this->arr_contenido;
	}
	
	/**
	 * Modificar contenido del fichero.
	 */
	public function modificarFich($contenido){
		
		foreach($contenido as $cont){
			$this->contFich.= $cont;
		}
}
}

Lo añado al archivo donde llamo a todos lo métodos:
require_once 'ficheros.class.php';
require_once 'limpiar.class.php';

$fich= new ficheros();

//Quitar espacios al principio y final y tabuladores.
$limpEsp= new limpiar();
$limpEsp->LimpEspInfin($fich->leer());
//
////Meter modificaciones en archivos.
$modifFich= new ficheros();
$modifFich->modificarFich($limpEsp);
//
print_r($modifFich);

Y el resultado:

ficheros Object
(
    [files:protected] => Array
        (
            [0] => prueba_copia.po
        )

    [dirPath:protected] => ../traduc
    [fp:protected] => Array
        (
        )

    [arr_contenido] => Array
        (
        )

    [contFich] => Array <===== ESTO ES LO QUE FALLA.
)

No entiendo el porqué me lo devuelve como un array y no como un string.

¿Alguien sabría decirme que está fallando?.

Gracias por vuestra paciencia y ayuda.
-- 
--
Saludos cordiales.
Pablo.

Si lo reenvías, ten la precaución de borrar los datos de procedencia que
encabezarían tu reenvío – empezando por mi dirección de correo
electrónico - . Coloca siempre las direcciones de tus contactos en el
campo <CCO> para que viajen discretas, no en el campo <Para> ni en
el<CC>. De esa forma nadie que lo reciba tendrá constancia de las señas
de los demás destinatarios a los que también se remite. Todo ello a fin
de evitar que nadie se aproveche de todas las direcciones que se van
acumulando al pasar de buzón a buzón para el lanzamiento de correo
basura y otras indeseadas lindezas. Aparte claro está de garantizar la
privacidad.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.