Comments (8)
@Xon yes it works. Inside the trait method, members will be accessed dynamically.
Just my personal note: it is not a good practice to call something that is not there in design time. Compose class with instances of services instead of traits, or define abstract methods in the trait. Otherwise bad trait pushes developers to create an unmaintainable piece code.
from peachpie.
It wouldn't be so bad if you could restrict a trait to being used to class implements a particular interface/abstract class.
But the php traits where added back int the php 5.4 days, and don't appear to have been touched spec-wise in the php 7.x language updates.
from peachpie.
Closing as implemented in order to run our test cases and PHP examples successfully.
from peachpie.
+1 for this. Was trying to compile Drupal 8 using Peachpie and then realised that Drupal 8 uses PHP trait extensively.
from peachpie.
Isn't it possible to implement traits using interface
s?
from peachpie.
@hadi77ir traits have implementations and fields and can extend other classes. Even tho CLR allows interfaces with implementations I think it wouldn't be a good practice. Also this wouldn't allow trait members aliasing.
from peachpie.
preview of trait support implemented in 81bee0e
from peachpie.
@jakubmisek php implements traits as basically copy & pasting a trait into a class's namespace. This means constants, fields and methods of the hosting class can be called by any trait method as if it was part of the trait.
Would the generated separate class implementation allow this?
from peachpie.
Related Issues (20)
- Help with solving the problem with the magic __get and __set HOT 2
- ioncube loader HOT 1
- Magic methods not working as expected HOT 4
- PeachPie 1.0.* Status HOT 1
- Peachpie crypt behavior HOT 1
- some syntax error HOT 4
- strange compiler behavior when modifier is "protected" HOT 1
- program execution time HOT 3
- virtual and override HOT 1
- property, variable and PhpValue HOT 4
- Strange behavior when instantiating a class in an anonymous function HOT 4
- Problems when compiling a project using Avalonia UI. Help is needed HOT 5
- can not work woth tinyfilemanager
- Home Page Show Not Found HOT 1
- Change Sdk version to 1.1.5 make error when running HOT 3
- 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
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.