Comments (4)
This works with PeachPie in PHP code, because the PeachPie compiler takes care of it. So you can compile this PHP code with PeachPie.
However, PeachPie/C# runtime does not implement dynamic
approach yet, so you can't do it from C#.
from peachpie.
Also, it's not quite a magic method. It's a dynamic property not involving __get
or __call
.
Magic methods won't work through dynamic
in C# either.
We'd have to implement IDynamicMetaObjectProvider
.
from peachpie.
@jakubmisek thank you for the clarification ;)
I am very interested on using the PHP/C# interop, using PHP objects on C#/Blazor. I already have a small REST API written in PHP using StraightFramework and RedbeanPHP so I'll try to run this REST API (on top of PeachPie) and Blazor making the calls to it over HTTP requests.
Investigating here, I was able to use RedbeanPHP on C# as follow:
ctx.Call("R::setup", "sqlite:./dbfile.db");
dynamic _user = ctx.Call("R::dispense", "user");
_user.Object.__set("username", "luiz.zaiats");
dynamic _profession = ctx.Call("R::dispense", "profession");
_profession.Object.__set("name", "Programmer");
_user.Object.__set("profession", _profession);
ctx.Call("R::store", _user);
The above code works perfectly, but when I try to load data and update, something is messy on the bean itself not allowing me to update the object:
var users = ctx.Call("R::find", "user");
foreach(var kv in users) {
RedBeanPHP.OODBBean v = kv.Value.Object as RedBeanPHP.OODBBean;
Console.WriteLine(v.__get("username"));
RedBeanPHP.OODBBean p = v.__get("profession").AsObject() as RedBeanPHP.OODBBean;
Console.WriteLine(p.__get("name"));
p.__set("name", "Updated Programmer");
Console.WriteLine(p.__get("name"));
ctx.Call("R::store", (PhpValue)kv.Value); // this operation throws Unhandled exception. RedBeanPHP\RedException: Identifier does not conform to RedBeanPHP security policies.
}
Congrats for PeachPie, it's an incredible tool for us, PHP programmers out there!
from peachpie.
you can simplify a few calls there, if you reference the PHP project from your C# project, i.e.:
ctx.Call("R::setup", "sqlite:./dbfile.db");
->
R.setup(ctx, "sqlite:./dbfile.db");
and
dynamic _user = ctx.Call("R::dispense", "user");
_user.Object.__set("username", "luiz.zaiats");
->
var user = R.dispense(ctx, "user");
user.__set("username", "luiz.zaiats");
and
RedBeanPHP.OODBBean v = kv.Value.Object as RedBeanPHP.OODBBean
->
var v = kv.Value.Cast<RedBeanPHP.OODBBean>()
anyways; if you have the full stack trace of the "Unhandled exception", we can do something about it
from peachpie.
Related Issues (20)
- can not work woth tinyfilemanager
- Home Page Show Not Found HOT 1
- Change Sdk version to 1.1.5 make error when running HOT 5
- when php google/protobuf is used, generated binary php file cause exception after compiled to dll
- Directly render Blazor component on PHP page (ASP.NET Core 8) HOT 2
- Peachpie.Runtime uses outdated System.Data.SqlClient 4.6.0 HOT 4
- Special characters cannot be recognized HOT 2
- PHP4034: Failure writing debug information: Value cannot be null. (Parameter 'type') HOT 2
- How to convert laravel to bitcode
- PeachPie is not copying images into build HOT 3
- Error in constructor of class inheriting DOMDocument? HOT 6
- sort method compare not supported - throw error using WP 6.4.3 - update.php HOT 2
- The compiler sees several `Load()` overloads, so it postpones the resolution to runtime using the callsite (`call_Load?0`).
- SixLabors Version Update Required HOT 1
- Dynamicly compile the php script HOT 3
- CLR event support HOT 1
- Peachpie.Library.XmlDom.XMLWriter: Error writing namespace attribute 'xmlns' HOT 7
- mb_ series functions have errors
- Consider updating SixLabors.ImageSharp HOT 1
- Are there more recent release builds for sponsors? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from peachpie.