Есть ли способ сказать php complier, что я хочу конкретное неявное преобразование из одного типа в другое?Неявное преобразование типов для классов PHP?
Простой пример:
class Integer
{
public $val;
}
function ExampleFunc(Interger $i){...}
ExamFunc(333); // 333 -> Integer object with $val == 333.
[править] ... кто-то спросил для примера. Вот пример из C#. Это логический тип, который меняет значение после его обращения один раз.
/// <summary>
/// A Heisenberg style boolean that changes after it has been read. Defaults to false.
/// </summary>
public class hbool
{
private bool value;
private bool changed = false;
public hbool()
{
value = false;
}
public hbool(bool value)
{
this.value = value;
}
public static implicit operator bool(hbool item)
{
return item.Value;
}
public static implicit operator hbool(bool item)
{
return new hbool(item);
}
public bool Value
{
get
{
if (!changed)
{
value = !value;
changed = true;
return !value;
}
return value;
}
}
public void TouchValue()
{
bool value1 = Value;
}
public static hbool False
{
get { return new hbool(); }
}
public static hbool True
{
get { return new hbool(true); }
}
}
[Test]
public void hboolShouldChangeAfterRead()
{
hbool b = false;
Assert.IsFalse(b);
Assert.IsTrue(b);
Assert.IsTrue(b);
hbool b1 = false;
Assert.IsFalse(b1);
Assert.IsTrue(b1);
Assert.IsTrue(b1);
hbool b2 = true;
Assert.IsTrue(b2);
Assert.IsFalse(b2);
Assert.IsFalse(b2);
bool b3 = new hbool();
Assert.IsFalse(b3);
Assert.IsFalse(b3);
Assert.IsFalse(b3);
}
конкретные неявное, не было бы явным? – Malfist
нет действительно. Явное, когда вы делаете что-то вроде: ExamFunc ((Integer) 333) в C# у вас есть неявный оператор: класса MyType { общественный статический неявный оператор INT (MyType м) { // код для преобразования от MyType к Int }} http://msdn.microsoft.com/en-us/library/z5z9kes2(VS.71).aspx –
вы не смешивая понятия здесь? Я не знаю C#, но кажется, что код, на который вы ссылаетесь, создает оператор для преобразования из одного типа в другой, но он автоматически в php, вам не нужно создавать способ преобразования, скажем, из строки в int .. –