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

Crear Tipos personalizados en PHP 5?

Estas en el tema de Crear Tipos personalizados en PHP 5? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Holas!! Estos días he estado estudiando la POO en PHP 5, y estoy muy entusiasmada ^_^ Pero ahora me he topado con esta duda, la ...
  #1 (permalink)  
Antiguo 11/04/2008, 16:29
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Crear Tipos personalizados en PHP 5?

Holas!!

Estos días he estado estudiando la POO en PHP 5, y estoy muy entusiasmada ^_^
Pero ahora me he topado con esta duda, la cual quisiera aclarar para poder continuar :)

Quisiera saber si PHP 5 permite la creación de Tipos de Datos personalizados.

En otros lenguajes uno puede definir tipos usando la palabra clave "type". Por ejemplo, en Delphi, puedo crear tipos:

- Para que actúen como "objeto ultrabásico con propiedades", esto es, que si una variable es definida de ese tipo, la variable puede accesar a sus "propiedades" poniendo el famoso punto al final de su nombre (como la flecha de PHP).

Ejemplo:

Código:
type 
 TMiTipo = Record
  Nombre : String;
  Cantidad : Integer;
end;

{ ...Creo variable y la uso }
var 
  miVariable : TMiTpo;
begin
  miVariable.Nombre := 'Libros';
  miVariable.Cantidad := 6;
- Para que actúen como "set de constantes", esto es, que si defino una variable con ese tipo, dicha variable está limitada a recibir por valor sólo una de las constantes del tipo.

Código:
type 
 TMiTipo2 = (esLibro, esRevista, esPeriodico);

{ ...Creo variable y la uso }
var 
  miVariable : TMiTpo2;
begin
  if miVariable = esLibro then 
    ShowMessage('Es un Libro!')
  else
    ShowMessage('Es una Revista o tal vez un Periodico :P');
Esop. Quisiera saber si puedo definir tipos así como en estos ejemplos, en PHP 5.

Mi intención es poder restringir los valores que un parámetro o atributo de un objeto puedan recibir por parte de quien usa la clase que yo desarrolle (como en el segundo ejemplo, donde creo ese array de "palabras clave", las cuales no son ni variables ni constantes, son valores en sí mismos, o al menos así las veo yo xD).

Muchas gracias de antemano. Saludos a todos ^___^
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #2 (permalink)  
Antiguo 11/04/2008, 18:03
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Re: Crear Tipos personalizados en PHP 5?

claro que se puede, aunque no es requirimiento en PHP, ya que este automaticamente setea el tipo segun el dato.

Pero veamos cómo se definen los tipos en PHP5.

Los moldeamientos permitidos son:

* (int), (integer) - moldeamiento a entero
* (bool), (boolean) - moldeamiento a booleano
* (float), (double), (real) - moldeamiento a flotante
* (string) - moldeamiento a cadena
* (binary) - moldeamiento a cadena binaria (PHP 6)
* (array) - moldeamiento a matriz
* (object) - moldeamiento a objeto

Ejemplo:
Código PHP:
$unEntero = (int) $varInt; (Si asignas un numero automaticamente es tratado como entero)
$unEntero = (int) 40;(redundante)

$unString = (string) $varStr;
$unString = (string) 'mi string'; (redundante
Otra forma es con la función settype.
  #3 (permalink)  
Antiguo 14/04/2008, 16:13
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: Crear Tipos personalizados en PHP 5?

Gracias zsamer :D

Con tu respuesta se contesta la primera duda que tenía, que era acerca de poder restringir el tipo de variable a recibir en un parámetro.

Ahora bien, sigo en duda sobre el segundo caso que expuse, el de poder crear tipos totalmente personales, esto es, como en el ejemplo, crear un set de "palabras claves" que un tipo de datos puede recibir por valor. ¿Se puede? Mi pregunta es cómo trabajar con tipos inventados por una, no con los tipos predefinidos por PHP.

Lograr algo como este chamullo o falacia:

Código PHP:
// tipo integer
$variable1 14;
// tipo cadena
$variable2 "Hola!";

// ahora, si pudiésemos implementar un tipo personalizado así:
type mitipo set(VALOR1VALOR2VALOR2);

// los unicos valores que $variable3 podría tomar serían los de su tipo y no otros:
$variable3 VALOR1
Mmh..... escribiendo el ejemplo chamullado me he dado cuenta que parece que finalmente lo que pregunto no tiene caso. Pues precisamente PHP deja libre la asignación de tipos a las variables, al tiempo de ejecución x____x

Gracias de todos modos, me ayudarán si comentan y opinan sobre esto. Muchas gracias.
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #4 (permalink)  
Antiguo 14/04/2008, 17:44
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Re: Crear Tipos personalizados en PHP 5?

se me ocurre implementando interfaces de objetos o clases abstractas.

Puedes crear clases tipos, luego estas implementan una interfaz, cada varaible debiera ser un objeto tipo que implementa ciertea interfaz luego tienes la condición.

Ej:

Interface: miTipoInt
Código PHP:
interface MiTipoInterface
{
public function 
setValue($tipo);
public function 
getValue();
public function 
getType();

Código PHP:
class MiTipo implement MiTipoInterface
{
private 
$_tipo null;

const 
TYPE 'mi_tipo';

public function 
__construct($value){
if(
$value){
$this->setTipo($value);
} else {
throw new 
Exeption('El valor no puede ser vacio');
}
}

public function 
setValue($tipo){
$this->_tipo $tipo;
}
public function 
getValue(){
return 
$this->_tipo;
}

public function 
getType(){
return 
self::TYPE;

Código PHP:
$obj1 = new MiTipo('Hola!');
$obj2 = new MiTipo('que');
$obj3 = new MiTipo('tal');

if(
$obj3 instanceof MiTipoInterface){
print 
'el objeto ' .$obj3 ->getValue(). ' es del tipo ' $obj3 ->getTipo();


Última edición por zsamer; 14/04/2008 a las 18:01
  #5 (permalink)  
Antiguo 24/04/2008, 09:14
Usuario no validado
 
Fecha de Ingreso: abril-2008
Mensajes: 33
Antigüedad: 16 años, 1 mes
Puntos: 1
Re: Crear Tipos personalizados en PHP 5?

te dejo muda!!!! jaja , ella esperaba algo como en visual que se pone algo asi
type MisDatos
nombre as string
fecha as date
etc...
end type

pero me parece que en php no queda otra que crear un objeto, ademas creo es mucho mas rapido.
  #6 (permalink)  
Antiguo 24/04/2008, 10:05
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: Crear Tipos personalizados en PHP 5?

Jajajaja xD

Lo cierto es que nunca he usado interfaces, apenas hace unos días he leído que existían xD jajaja! Y el caso es que leí la respuesta hace días, pero tenía la cabeza hecha un ovillo así que no la quise analizar en ese momento x__x (como para preguntarle a zsamer dudas y esas cosas)

Como sea, la primera vez que implemente interfaces seguro será probando el ejemplo que me ha dado zsamer ^_^ jejeje (de paso, gracias zsamer :P)

Y sí, la verdad es que ya del inicio como que pensé que no podría hacer en PHP lo que quería hacer (como en Delphi o VB), mesbe86 :(
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
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.
Tema Cerrado




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