Typage d'objet

Statut
N'est pas ouverte pour d'autres réponses.

Ezekiel !

Elite
Merci <3 Shrekju pour les 2 cacas :pfiou:

Bonjour !
Je viens de finir mon projet en Java et je me suis remis au PHP. La je me dis, je vais une fois lire entièrement toute les nouveautés de PHP5 niveau POO.
Je vois (à mon grand étonnement) qu'on peut faire du typage d'objet. Enfin, on peut juste demander qu'un variable soit une instance d'un "array" ou d'un certain type de classe mais les types primitifs ne sont pas pris en compte.
C'est là que ça peut devenir intéressant (ou pas en fait mais bon ^^), pourquoi ne pas créer des classes int, string, float, ... pour les types primitifs un peu à l'instar de ce qui existe en java.
J'aime vraiment le concept de typage et je trouvais d'ailleurs un peu dommage qu'en PHP ce soit beaucoup plus laxiste...
Je ne sais ça réellement ce que ça peut apporter en soi à part une clarté du code accrue et au moins on est sur du type de donnée que l'on reçoit en paramètre.
Un tit exemple de ce que pourrait être une classe int (non testé) :
Code:
class int
{
private $x;
function __construct($x)
{ if (preg_match('!^[0-9]*$!', $x)) $this->x = x;
else echo 'Erreur, parametre invalide !';
}
}
Maintenant ça pourra paraitre totalement inutile à beaucoup à mon avis mais bon... vous en pensez quoi ?
 

Ahava

Revenant
Que c'est très très interessant ! :)

Continue, si tu le fais pour tous je serai surement preneur de ton package :)


(oui jsuis aussi un java-boy :D)
 
1er
OP
Ezekiel !

Ezekiel !

Elite
Bon pour le fun j'ai fait ça :
Code:
<?php
$x = int(40);
echo $x;
$x->add (int(40));
echo $x;
?>
qui affiche 4080

Code:
<?php
class int
{
	public $x;
	
	function __construct($x)
	{
		if (preg_match('!^[0-9]*$!', $x))
		{
			$this->x = $x;
		}
		else 
		{
			echo 'Mauvais paramètre.';
		}
	}
	public function add (int $x)
	{
		$this->x += $x->x;
	}
	function __toString ()
	{
		return ''.$this->x;
	}
}
?>
La classe

Code:
	function int ($x)
	{
		return new int($x);
	}
La méthode pour faire comme en java :)
 

zoheir

cvm.mangaleet()
Et pourquoi ne pas propager/gérer les exceptions au lieu de faire un bête echo ? :dead:

Faudra aussi gérer le casting et pas seulement l'instanciation, d'ailleurs ton test d'entier n'est pas complet :/
 
1er
OP
Ezekiel !

Ezekiel !

Elite
lol nan mais j'ai pas dit que c'était parfait hein :D
C'était juste histoire de voir :)
Pour les exceptions, j'ai pas assez d'expérience pour faire qqchose de valable même si ça doit pas être bien compliqué.
Fin bon tout ça c'est juste une idée qui me passait par la tête comme ça :) Faut voir si ça peut avoir une réel utilité !
 

Ahava

Revenant
Les exceptions en php, meme chose qu'en Java :)
 

Tifox

ou pas
Je ne suis pas convaincu, car si ça résout le "problème" du typage, ça rend plus compliqué l'utilisation. Sauf si on sait redéfinir les opérations comme en C++ (mais je n'ai vu ça nulle part).
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut