-
-
Notifications
You must be signed in to change notification settings - Fork 203
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
property, variable and PhpValue #1115
Comments
The compiler uses |
Please see my original answer. In .NET we can't use the strict type, because we wouldn't be able to store PHP references in there. class X {
public B $b;
}
$x = new X;
$a =& $x->b; // because of this, we need to treat X.b as `PhpValue`, not `B`. We couldn't create a counted reference to X.b otherwise.
// both $x->b and $a are instance of `Pchp.Core.PhpAlias` now
$a = new B; This is alright for local variable tho, because the compiler performs data flow analysis and it knows, the variable won't be aliased; therefore it can use the strict type. (just an idea) We may, however, override this behavior using some additional PHPDoc annotation, so the user can "force" strict typing on a property. Making a reference to such a property would cause a runtime exception though. |
Do you want to add something similar in the future? /**
* @type-strict
*/
or/and
#[TypeStrict] I think if you add this in future updates, then the responsibility for using such strict modes (as in the original php) will be the responsibility of the developer himself. I like your work, but I would like to have more flexible control over types and data when writing programs. this example is very inconvenient to use and in some situations is simply not possible. class X {
public B $b;
}
$x = new X;
$a =& $x->b; // because of this, we need to treat X.b as `PhpValue`, not `B`. We couldn't create a counted reference to X.b otherwise.
// both $x->b and $a are instance of `Pchp.Core.PhpAlias` now
$a = new B; |
good time of the day. i need to use the types i specify. above is a standard example in pie. however, it is permanently converted to the specified type "PhpValue". tell me how to leave the type that I specify, and not the one that is forcibly converted ??? if it's not possible, will you fix it and i can hope so???
The text was updated successfully, but these errors were encountered: