<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://htyp.org/mw/index.php?action=history&amp;feed=atom&amp;title=PHP%2Fcriticism%2Fwoozle</id>
	<title>PHP/criticism/woozle - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://htyp.org/mw/index.php?action=history&amp;feed=atom&amp;title=PHP%2Fcriticism%2Fwoozle"/>
	<link rel="alternate" type="text/html" href="https://htyp.org/mw/index.php?title=PHP/criticism/woozle&amp;action=history"/>
	<updated>2026-07-26T04:14:50Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://htyp.org/mw/index.php?title=PHP/criticism/woozle&amp;diff=25247&amp;oldid=prev</id>
		<title>Woozle: Created page with &quot;Some &#039;&#039;actual&#039;&#039; problems I&#039;ve found with PHP 7, after using PHP for the better part of two decades: ==Interfaces and Traits== * Parameters can be declared to be of a given {{l...&quot;</title>
		<link rel="alternate" type="text/html" href="https://htyp.org/mw/index.php?title=PHP/criticism/woozle&amp;diff=25247&amp;oldid=prev"/>
		<updated>2019-09-29T16:45:46Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Some &amp;#039;&amp;#039;actual&amp;#039;&amp;#039; problems I&amp;#039;ve found with PHP 7, after using PHP for the better part of two decades: ==Interfaces and Traits== * Parameters can be declared to be of a given {{l...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Some &amp;#039;&amp;#039;actual&amp;#039;&amp;#039; problems I&amp;#039;ve found with PHP 7, after using PHP for the better part of two decades:&lt;br /&gt;
==Interfaces and Traits==&lt;br /&gt;
* Parameters can be declared to be of a given {{l/sub|class|PHP}} or a given {{l/sub|interface|PHP}}, but not a given {{l/sub|trait|PHP}}.&lt;br /&gt;
* Traits cannot be declared to implement interfaces.&lt;br /&gt;
** Interfaces and traits really kind of go together -- neither one is tied to a specific class; a trait can be thought of as a way of implementing a given interface -- but there is no way to attach one to the other. So even if you&amp;#039;re systematically defining traits as implementations of specific interfaces, every class that uses the trait needs to also declare that it implements the interface.&lt;br /&gt;
* There is no way to dynamically test an object or class-name to see if it uses a trait or implements an interface.&lt;/div&gt;</summary>
		<author><name>Woozle</name></author>
	</entry>
</feed>