Giter Site home page Giter Site logo

trait support about peachpie HOT 8 CLOSED

peachpiecompiler avatar peachpiecompiler commented on May 20, 2024
trait support

from peachpie.

Comments (8)

jakubmisek avatar jakubmisek commented on May 20, 2024 1

@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.

Xon avatar Xon commented on May 20, 2024 1

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.

jakubmisek avatar jakubmisek commented on May 20, 2024 1

Closing as implemented in order to run our test cases and PHP examples successfully.

from peachpie.

ztl8702 avatar ztl8702 commented on May 20, 2024

+1 for this. Was trying to compile Drupal 8 using Peachpie and then realised that Drupal 8 uses PHP trait extensively.

from peachpie.

hadi77ir avatar hadi77ir commented on May 20, 2024

Isn't it possible to implement traits using interfaces?

from peachpie.

jakubmisek avatar jakubmisek commented on May 20, 2024

@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.

jakubmisek avatar jakubmisek commented on May 20, 2024

preview of trait support implemented in 81bee0e

from peachpie.

Xon avatar Xon commented on May 20, 2024

@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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.