Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Generando los metodos get/set en doctrine

Estas en el tema de Generando los metodos get/set en doctrine en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas chicos, Estoy utilizando mi propio framework y doctrine, he visto que se puede generar los metodos getters y setters desde consola una vez definidas ...
  #1 (permalink)  
Antiguo 02/04/2012, 02:57
 
Fecha de Ingreso: enero-2012
Ubicación: España
Mensajes: 150
Antigüedad: 12 años, 2 meses
Puntos: 0
Generando los metodos get/set en doctrine

Buenas chicos,

Estoy utilizando mi propio framework y doctrine, he visto que se puede generar los metodos getters y setters desde consola una vez definidas las entidades.
¿ como se hace ? ¿ como accedo a la consola ?

Última edición por chemajmb; 02/04/2012 a las 03:25
  #2 (permalink)  
Antiguo 02/04/2012, 03:52
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Generando los metodos get/set en doctrine

Esta en la doc, para crear la consola http://docs.doctrine-project.org/pro...nce/tools.html, también puedes ver un ejemplo en el sandbox https://github.com/doctrine/doctrine.../tools/sandbox y para generar los métodos debes utilizar el comando orm:generate-entities
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 02/04/2012, 05:11
 
Fecha de Ingreso: enero-2012
Ubicación: España
Mensajes: 150
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Generando los metodos get/set en doctrine

Ya estaba mirando esa pagina.

Cita:
If you installed Doctrine 2 through PEAR, the doctrine command line tool should already be available to you.
Yo he instalado doctrine a traves de Pear, te dice doctrine command line tool deberia estar disponible para ti. ¿ Pero donde ? Madre mia que perdido estoy o que mal lo explican por dios!!!!!!!

Le doy vueltas y mas vueltas pero no me entero.

Cita:
The HelperSet instance has to be generated in a separate file (i.e. cli-config.php) that contains typical Doctrine bootstrap code and predefines the needed HelperSet attributes mentioned above. A typical cli-config.php file looks as follows:
Si, lo genero el helperset, ¿ y que ? pero si no me dicen nada mas ...

It is important to define a correct HelperSet that doctrine.php script will ultimately use. The Doctrine Binary will automatically find the first instance of HelperSet in the global variable namespace and use this.

Doctrine.php
Código PHP:
...codigo
foreach ($GLOBALS as $helperSetCandidate) {
        if (
$helperSetCandidate instanceof SymfonyComponentConsoleHelperHelperSet) {
            
$helperSet $helperSetCandidate;
            break;
        }
    }
... 
Si, mas o menos lo entiendo, pero si mi cli-config.php, que no se ni donde tengo que guardarlo, cuando ejecutarlo, ...
Código PHP:
<?php
require_once __DIR__ '/../../lib/Doctrine/Common/ClassLoader.php';

$classLoader = new DoctrineCommonClassLoader('Entities'__DIR__);
$classLoader->register();

$classLoader = new DoctrineCommonClassLoader('Proxies'__DIR__);
$classLoader->register();

$config = new DoctrineORMConfiguration();
$config->setMetadataCacheImpl(new DoctrineCommonCacheArrayCache);
$config->setProxyDir(__DIR__ '/Proxies');
$config->setProxyNamespace('Proxies');

$connectionOptions = array(
    
'driver' => 'pdo_sqlite',
    
'path' => 'database.sqlite'
);

$em DoctrineORMEntityManager::create($connectionOptions$config);

$helperSet = new SymfonyComponentConsoleHelperHelperSet(array(
    
'db' => new DoctrineDBALToolsConsoleHelperConnectionHelper($em->getConnection()),
    
'em' => new DoctrineORMToolsConsoleHelperEntityManagerHelper($em)
));
Si aqui el $helperSet es una variable local, ¿ como hace para doctrine.php cogerlo de las variables globales ?

Es que, no se, hay cosas que se me escapan, que extres, por mas vueltas que le doy, hay cosas que no consigo comprender, creo que no lo explican muy bien.

Necesito ayuda compañeros.
Necesito un poco de orientacion en las cosas basicas para usar la consola.

Última edición por chemajmb; 02/04/2012 a las 06:24
  #4 (permalink)  
Antiguo 02/04/2012, 09:56
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Generando los metodos get/set en doctrine

Hay que tener paciencia chemajmb, al principio puede parecer algo complejo pero en realidad no lo es y como todo requiere algo de practica, a ver, si lo instalaste a través de PEAR ya tienes que tener el cli de doctrine, has ejecutado en la consola el comando doctrine ?, en caso negativo, ejecútalo, deberías ver las opciones del cli.

Como funciona ?, es algo sencillo, al ejecutar el cli este trata de incluir el archivo config-cli.php(lo busca en el path desde el cual estas ejecutando el comando), y de este fichero obtiene los datos de configuración para saber en donde buscar las entidades.
Donde deberia ir este fichero ? , lo normal es que este dentro del proyecto, algo asi(ajustalo a tu estructura):

Código PHP:
Ver original
  1. project
  2.     app
  3.     bin
  4.        cli-config.php
  5.     public
luego desde el root del proyecto lo ejecutarias con algo asi: bin/doctrine

cli-config.php
Código PHP:
Ver original
  1. $em  = include 'LanzadorDoctrine.php';
  2. $helperSet = new \Symfony\Component\Console\Helper\HelperSet(array(
  3.     'db' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper($em->getConnection()),
  4.     'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper($em)
  5. ));

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 02/04/2012, 10:43
 
Fecha de Ingreso: enero-2012
Ubicación: España
Mensajes: 150
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Generando los metodos get/set en doctrine

Cita:
Iniciado por masterpuppet Ver Mensaje
Hay que tener paciencia chemajmb, al principio puede parecer algo complejo pero en realidad no lo es y como todo requiere algo de practica, a ver, si lo instalaste a través de PEAR ya tienes que tener el cli de doctrine, has ejecutado en la consola el comando doctrine ?, en caso negativo, ejecútalo, deberías ver las opciones del cli.
...
A ver compañero, lo primero gracias por tu ayuda.

¿ Debo de estar en algun directorio en especifico para ejecutar doctrine o como ?
Yo lo que hago es ejecutar cmd y entonces escribo doctrine y le doy al enter pero nada.
¿ Quizas es que no lo tengo bien instalado ?

Yo lo instale atraves de un comando PEAR y se me descargo y tengo las 3 carpetas common, dbal y orm en la carpeta C:\xampp\php\PEAR\Doctrine\, ademas tengo otra carpeta C:\xampp\php\PEAR\bin\ que contiene un archivo llamado Doctrine.php .
  #6 (permalink)  
Antiguo 02/04/2012, 10:59
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Generando los metodos get/set en doctrine

En teoría deberías tener la carpeta C:\xampp\php\PEAR\bin\ en el PATH de tu OS ya que tiene los comandos de PEAR y por ende los comandos para Doctrine, así puedes ejecutar doctrine en cualquier carpeta.

Saludos.
  #7 (permalink)  
Antiguo 02/04/2012, 11:07
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Generando los metodos get/set en doctrine

Lo puedes ejecutar desde cualquier lugar, y deberias ver el cli, algo asi:



ahora, para que esto funcione doctrine tiene que estar en el PATH del sistema, deberías tener 3 archivos en la carpeta de php, doctrine. doctrine.php y doctrine.bat, algo asi:



tienes la carpeta php en el PATH del sistema ?, y algo te debe mostrar, al menos un error.
__________________
http://es.phptherightway.com/
thats us riders :)
  #8 (permalink)  
Antiguo 02/04/2012, 11:15
 
Fecha de Ingreso: enero-2012
Ubicación: España
Mensajes: 150
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Generando los metodos get/set en doctrine

Ok, muchas gracias una vez mas,
Poco a poco voy aprendiendo y cogiendo la idea,
Ya se lo que son las entities, los repository, los proxies para el lazy load, etc, estoy haciendo distintas pruebas.
Tengo ganas de poder usar doctrine sin problemas para ponerme a desarrollar mi proyecto.
Tengo momentos malos en los que me atasco y me estreso, pero poco a poco creo que lo estoy sacando, y me esta gustando Doctrine.


Que raro dios mio, tengo en las variables de entorno PATH = ...;C:\xampp\php\;C:\xampp\php\pear\bin
y tengo los 3 archivos doctrine en la carpeta php y doctrine.php en PHP\PEAR\bin\ pero nada,
no me funciona doctrine en la consola.

¿ por que ?
o.O

Última edición por chemajmb; 02/04/2012 a las 13:45
  #9 (permalink)  
Antiguo 02/04/2012, 17:08
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Generando los metodos get/set en doctrine

No te muestra ningún error ?, postea el contenido de php/doctrine.php
__________________
http://es.phptherightway.com/
thats us riders :)
  #10 (permalink)  
Antiguo 03/04/2012, 01:44
 
Fecha de Ingreso: enero-2012
Ubicación: España
Mensajes: 150
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Generando los metodos get/set en doctrine

Aqui esta:
Código PHP:
<?php
/*
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * This software consists of voluntary contributions made by many individuals
 * and is licensed under the LGPL. For more information, see
 * <http://www.doctrine-project.org>.
 */

require_once 'Doctrine/Common/ClassLoader.php';

$classLoader = new DoctrineCommonClassLoader('Doctrine');
$classLoader->register();

$classLoader = new DoctrineCommonClassLoader('Symfony''Doctrine');
$classLoader->register();

$configFile getcwd() . DIRECTORY_SEPARATOR 'cli-config.php';

$helperSet null;
if (
file_exists($configFile)) {
    if ( ! 
is_readable($configFile)) {
        
trigger_error(
            
'Configuration file [' $configFile '] does not have read permission.'E_ERROR
        
);
    }

    require 
$configFile;

    foreach (
$GLOBALS as $helperSetCandidate) {
        if (
$helperSetCandidate instanceof SymfonyComponentConsoleHelperHelperSet) {
            
$helperSet $helperSetCandidate;
            break;
        }
    }
}

$helperSet = ($helperSet) ?: new SymfonyComponentConsoleHelperHelperSet();

DoctrineORMToolsConsoleConsoleRunner::run($helperSet);
  #11 (permalink)  
Antiguo 03/04/2012, 06:25
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Generando los metodos get/set en doctrine

Pregunto de nuevo, no te muestra ningún error ?, command not found o algo similiar, en caso negativo verifica que se este ejecutando doctrine.php
__________________
http://es.phptherightway.com/
thats us riders :)
  #12 (permalink)  
Antiguo 03/04/2012, 09:29
 
Fecha de Ingreso: enero-2012
Ubicación: España
Mensajes: 150
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Generando los metodos get/set en doctrine

me pone
Cita:
""@php_bin@"" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.
  #13 (permalink)  
Antiguo 03/04/2012, 09:44
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Generando los metodos get/set en doctrine

Vas a tener que modificar el fichero doctrine.bat un par de veces, haz lo siguiente:

modifica esta linea

Código BAT:
Ver original
  1. if "%PHPBIN%" == "" set PHPBIN=@php_bin@

por esta

Código BAT:
Ver original
  1. set PHPBIN=C:\xampp\php\php.exe

ejecuta el comando doctrine(deberías ver el cli), luego vuelve a modificar la misma linea del fichero doctrine.bat con el siguiente valor:

Código BAT:
Ver original
  1. if "%PHPBIN%" == "" set PHPBIN=C:\xampp\php\php.exe

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #14 (permalink)  
Antiguo 03/04/2012, 10:36
 
Fecha de Ingreso: enero-2012
Ubicación: España
Mensajes: 150
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Generando los metodos get/set en doctrine

He hecho lo que me dices pero nada, no me sale el error pero no me hace nada.

mi doctrine.bat
Código:
@echo off

if "%PHPBIN%" == "" set PHPBIN=@php_bin@ <--- esta linea es la que he cambiado
if not exist "%PHPBIN%" if "%PHP_PEAR_PHP_BIN%" neq "" goto USE_PEAR_PATH
GOTO RUN
:USE_PEAR_PATH
set PHPBIN=%PHP_PEAR_PHP_BIN%
:RUN
"%PHPBIN%" "C:\xampp\php\doctrine" %*
Luego escribo doctrine en la consola, en cualquier directorio, incluso he probado en C:\xampp\php\ pero nada.

He probado haciendo el segundo cambio que me dices pero nada tampoco.

No se chico. Gracias por tus consejos, si no sabes que puede ser, mejor dejalo, ya probare a hacer lo mismo en el portatil cuando tenga tiempo, a ver si alli me funciona y te digo.
Ya por lo menos me funciona doctrine y estoy haciendo mis primeros usos, dejaremos la consola para otro momento, aunque me fastidie.

Muchas gracias, un saludo.
  #15 (permalink)  
Antiguo 03/04/2012, 10:51
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Generando los metodos get/set en doctrine

Pues no se, el bat debería ser algo asi:


Código BAT:
Ver original
  1. @echo off
  2.  
  3. set PHPBIN=C:\xampp\php\php.exe
  4. if not exist "%PHPBIN%" if "%PHP_PEAR_PHP_BIN%" neq "" goto USE_PEAR_PATH
  5. GOTO RUN
  6. :USE_PEAR_PATH
  7. set PHPBIN=%PHP_PEAR_PHP_BIN%
  8. :RUN
  9. "%PHPBIN%" "\xampp\php\doctrine" %*

y si prestas atención no es mas que un shortcut a este comando:

Código CMD:
Ver original
  1. C:\xampp\php\php.exe C:\xampp\php\doctrine.php

Saludos y suerte.
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: doctrine, framework, metodos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:38.