[Resuelto] Extensions fuera del directorio de proyecto

Hola a todos,

me acabo de iniciar en Yii hace unas semanas y estoy bastante contenta, pero me ha surgido el primer problema que no se cómo resolver.

Tengo varios proyectos en mi servidor y quiero refactorizarlos con Yii. Muchos usan librerías comunes por lo que tengo una carpeta con todas ellas de manera que cada aplicación puede acceder a este directorio compartido sin tener que repetir las librerías en cada proyecto. ¿Hay alguna manera de hacer esto mismo en Yii u obligatoriamente tengo que copiar cada librería en cada proyecto?

Gracias de antemano.

Saludos a la comunidad.

Si quieres utilizar parcialmente la librería de yii puedes dejarla fuera del root de tus proyectos y definir permisos para un buen nivel de seguridad. de hecho si te fijas en el boostrap de yii (el index.php) de un esqueleto de yii ves esto:




<?php


// change the following paths if necessary

$yii=dirname(__FILE__).'/../framework/yii.php';

$config=dirname(__FILE__).'/protected/config/main.php';


// remove the following lines when in production mode

defined('YII_DEBUG') or define('YII_DEBUG',true);

// specify how many levels of call stack should be shown in each log message

defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);


require_once($yii);

Yii::createWebApplication($config)->run();



Precisamente esta linea

$yii=dirname(FILE).’/../framework/yii.php’;

es la manera correcta de invocar la libreria de yii…simplemente carga la libreria de esta manera al crear modulos para tu proyecto y podras utilizar las herramientas del framework.

Te sugiero trabajo de manera modular.

Saludos

Gracias por tu respuesta JavierLog, pero no se si nos hemos entendido bien.

Tengo la libreria de Yii (el core) en una carpeta fuera del www tal y como me indicas. Las aplicaciones que voy creando se van metiendo en www.

–yii

–www

----aplicacion1

----aplicacion2

Cuando me descargo una extension o una librería de terceros en todos los manuales y tutoriales que encuentro indican que hay que meterlos dentro de las aplicaciones, por ejemplo en:

–yii

–www

----aplicacion1

------protected

---------extensions

Para mi no tiene sentido (y es un problema) tener que copiar la libreria en cada extension de cada aplicacion. ¿No puedo tener todas las librerias al mismo nivel que la carpeta yii y acceder desde las aplicaciones?

Saludos.

Ahora si entendi.

La mayoria de los programadores en yii con esqueletos hechos por el framework y por lo tanto las extensiones vienen para usar dentro de el directorio. Sin embargo ahí una manera de usar extensiones hechas por terceros, puedes usar las extensiones como "Componentes Genericos", es decir Puedes poner la extension en una carpeta de la carpeta del framework y luego llamadola haciendo import …ejem

–Yii

–extensions

—myextension

Al llamarla harias algo como esto


Yii::import("system.extensions.myextension.laclase")

O simplemente llamas a la clase con un require_once y creas una instancia de la clase principal de la extension y posteriormente usas sus metodos.

PD. en esta parte de la documentacion al final ves esto http://www.yiiframework.com/doc/guide/1.1/en/extension.use#generic-component

Saludos

Estupendo!

Era justo lo que estaba buscando, no era nada difícil pero no caía en ello.

Mil gracias.

Saludos,

Disculpa que abra nuevamente este tópico pero hay algo que no entiendo bien.

Porque hay que seguir usando las librerías que se encuentran en


../framework/yii.php

En mi caso, aplique lo siguiente:


./yiic webapp ../../miapp

para que se pusiera en el / de apache según lo que pensaba en el momento era que no iba a trabajar sin problemas a la hora de subirlo al hosting pero me dio error y ok, solucionado pero no se, pienso que si uno crea la aplicación fuera del directorio de Yii, no debería ser hiper dependiente de las librerías.

Bueno, la humilde confusión de un novato!! _:P

En este caso el aproach era usar las librerias del framework para un proyecto hecho en PHP sin el framework.

Ella no tiene un esqueleto de una aplicacion yii framework. asi que como no tiene una estructura fija, en donde colocar sus extensiones, lo hace dentro de la carpeta del framework.

Yii framework coloca sus librerias en una carpeta independiente de la aplicacion por motivos de seguridad y escalabilidad.Es decir si en algun momento sale una nueva version , puedes facilmente remplazar la carpeta del framework perse.

En cuanto a seguridad podria decirse que puedes poner niveles de permisos mas estrictos sobre la carpeta, u colocarla en un lugar estrategico de tu servidor para luego cargarla desde el bootstrap.

Si se quiere aun mas seguridad tambien podrias encryptar el bootstrap index.php con Zend Guard, o cualquiero otra herramienta de crypto para archivos de php, de esa manera nadie ve la localidad de tu libreria core.

Saludos