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.