Skip to content

Commit

Permalink
Object (class) abstraction - collect & output isAbstract, isInterface…
Browse files Browse the repository at this point in the history
…, & isTrait. Methods: output isAbstract. Interfaces: don't output properties header
  • Loading branch information
bkdotcom committed Jul 29, 2024
1 parent 90ca6ac commit 48b8754
Show file tree
Hide file tree
Showing 11 changed files with 60 additions and 18 deletions.
6 changes: 6 additions & 0 deletions src/Debug/Abstraction/Object/Definition.php
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,12 @@ class Definition
),
'extends' => array(),
'implements' => array(),
'isAbstract' => false,
'isAnonymous' => false,
'isFinal' => false,
'isInterface' => false,
'isReadOnly' => false,
'isTrait' => false,
'methods' => array(),
'methodsWithStaticVars' => array(),
'phpDoc' => array(
Expand Down Expand Up @@ -328,9 +331,12 @@ protected function getInitValues(array $values)
'className' => $isAnonymous
? $values['className'] . '|' . \md5($reflector->getName())
: $values['className'],
'isAbstract' => $reflector->isAbstract(),
'isAnonymous' => $isAnonymous,
'isFinal' => $reflector->isFinal(),
'isInterface' => $reflector->isInterface(),
'isReadOnly' => PHP_VERSION_ID >= 80200 && $reflector->isReadOnly(),
'isTrait' => $reflector->isTrait(),
),
array(
// these are temporary values available during abstraction
Expand Down
3 changes: 3 additions & 0 deletions src/Debug/Dump/Html/HtmlObject.php
Original file line number Diff line number Diff line change
Expand Up @@ -319,8 +319,11 @@ protected function dumpImplements(ObjectAbstraction $abs)
protected function dumpModifiers(ObjectAbstraction $abs)
{
$modifiers = \array_keys(\array_filter(array(
'abstract' => $abs['isAbstract'],
'final' => $abs['isFinal'],
'interface' => $abs['isInterface'],
'readonly' => $abs['isReadOnly'],
'trait' => $abs['isTrait'],
)));
if (empty($modifiers)) {
return '';
Expand Down
1 change: 1 addition & 0 deletions src/Debug/Dump/Html/ObjectMethods.php
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,7 @@ protected function getModifiers(array $info)
{
// phpcs:ignore SlevomatCodingStandard.Arrays.AlphabeticallySortedByKeys.IncorrectKeyOrder
return \array_keys(\array_filter(array(
'abstract' => $info['isAbstract'],
'final' => $info['isFinal'],
\implode(' ', (array) $info['visibility']) => true,
'static' => $info['isStatic'],
Expand Down
3 changes: 3 additions & 0 deletions src/Debug/Dump/Html/ObjectProperties.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ public function dump(Abstraction $abs)
$cfg = array(
'attributeOutput' => $abs['cfgFlags'] & AbstractObject::PROP_ATTRIBUTE_OUTPUT,
);
if ($abs['isInterface']) {
return '';
}
$magicMethods = \array_intersect(array('__get', '__set'), \array_keys($abs['methods']));
$html = '<dt class="properties">' . $this->getLabel($abs) . '</dt>' . "\n";
$html .= $this->magicMethodInfo($magicMethods);
Expand Down
2 changes: 1 addition & 1 deletion src/Debug/css/Debug.css

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions src/Debug/js/Debug.jquery.js
Original file line number Diff line number Diff line change
Expand Up @@ -6292,17 +6292,21 @@
'> .array-inner > li > .exclude-count': '<i class="fa fa-eye-slash"></i>'
},
iconsObject: {
'> .t_modifier_abstract': '<i class="fa fa-circle-o"></i>',
'> .t_modifier_final': '<i class="fa fa-hand-stop-o"></i>',
'> .t_modifier_interface': '<i class="fa fa-handshake-o"></i>',
'> .t_modifier_readonly': '<span class="fa-stack">' +
'<i class="fa fa-pencil fa-stack-1x"></i>' +
'<i class="fa fa-ban fa-flip-horizontal fa-stack-2x text-muted"></i>' +
'</span>',
'> .t_modifier_trait': '<i class="fa fa-puzzle-piece"></i>',
'> .info.magic': '<i class="fa fa-fw fa-magic"></i>',
'parent:not(.groupByInheritance) > dd[data-inherited-from]:not(.private-ancestor)': '<i class="fa fa-fw fa-clone" title="Inherited"></i>',
'parent:not(.groupByInheritance) > dd.private-ancestor': '<i class="fa fa-lock" title="Private ancestor"></i>',
'> dd[data-attributes]': '<i class="fa fa-hashtag" title="Attributes"></i>',
'> dd[data-declared-prev]': '<i class="fa fa-fw fa-repeat" title="Overrides"></i>',
'> .method.isDeprecated': '<i class="fa fa-fw fa-arrow-down" title="Deprecated"></i>',
'> .method > .t_modifier_abstract': '<i class="fa fa-circle-o" title="abstract method"></i>',
'> .method > .t_modifier_magic': '<i class="fa fa-magic" title="magic method"></i>',
'> .method > .t_modifier_final': '<i class="fa fa-hand-stop-o"></i>',
'> .method > .parameter.isPromoted': '<i class="fa fa-arrow-up" title="Promoted"></i>',
Expand Down
2 changes: 1 addition & 1 deletion src/Debug/js/Debug.jquery.min.js

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions src/Debug/js_src/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,21 @@ var config = {
'> .array-inner > li > .exclude-count': '<i class="fa fa-eye-slash"></i>'
},
iconsObject: {
'> .t_modifier_abstract': '<i class="fa fa-circle-o"></i>',
'> .t_modifier_final': '<i class="fa fa-hand-stop-o"></i>',
'> .t_modifier_interface': '<i class="fa fa-handshake-o"></i>',
'> .t_modifier_readonly': '<span class="fa-stack">' +
'<i class="fa fa-pencil fa-stack-1x"></i>' +
'<i class="fa fa-ban fa-flip-horizontal fa-stack-2x text-muted"></i>' +
'</span>',
'> .t_modifier_trait': '<i class="fa fa-puzzle-piece"></i>',
'> .info.magic': '<i class="fa fa-fw fa-magic"></i>',
'parent:not(.groupByInheritance) > dd[data-inherited-from]:not(.private-ancestor)': '<i class="fa fa-fw fa-clone" title="Inherited"></i>',
'parent:not(.groupByInheritance) > dd.private-ancestor': '<i class="fa fa-lock" title="Private ancestor"></i>',
'> dd[data-attributes]': '<i class="fa fa-hashtag" title="Attributes"></i>',
'> dd[data-declared-prev]': '<i class="fa fa-fw fa-repeat" title="Overrides"></i>',
'> .method.isDeprecated': '<i class="fa fa-fw fa-arrow-down" title="Deprecated"></i>',
'> .method > .t_modifier_abstract': '<i class="fa fa-circle-o" title="abstract method"></i>',
'> .method > .t_modifier_magic': '<i class="fa fa-magic" title="magic method"></i>',
'> .method > .t_modifier_final': '<i class="fa fa-hand-stop-o"></i>',
'> .method > .parameter.isPromoted': '<i class="fa fa-arrow-up" title="Promoted"></i>',
Expand Down
47 changes: 31 additions & 16 deletions src/Debug/scss/_arrayAndObject.scss
Original file line number Diff line number Diff line change
Expand Up @@ -105,26 +105,30 @@ li[class*=m_] > .t_array.array-file-tree > .array-inner {
color: $color-header;
}

.t_modifier_public {
color: $color-public;
}
.t_modifier_protected {
color: $color-protected;
.t_modifier_abstract {
font-weight: bold;
color: #9d2d2d
}
.t_modifier_private {
color: $color-private;
.t_modifier_debug {
color: $color-debug;
}
.t_modifier_final {
color: $color-final;
font-weight: bold;
}
.t_modifier_private {
color: $color-private;
}
.t_modifier_protected {
color: $color-protected;
}
.t_modifier_public {
color: $color-public;
}
.t_modifier_static {
font-style: italic;
color: $color-static;
}
.t_modifier_debug {
color: $color-debug;
}

> .object-inner {
> .modifiers {
Expand All @@ -134,7 +138,8 @@ li[class*=m_] > .t_array.array-file-tree > .array-inner {
display: inline-block;
margin-left: 0;
margin-right: 0.5em;
border: solid 1px;
border-style: solid;
border-width: 1px;
border-radius: 4px;
padding: 0 .75em;
height: 1.75em;
Expand All @@ -150,6 +155,21 @@ li[class*=m_] > .t_array.array-file-tree > .array-inner {
height: 100%;
}
*/
> .t_modifier_abstract {
color: #333;
background-color: lighten(#c0c0c0, 15%);
border-color: #666;
}
> .t_modifier_final {
color: $error-fg;
background-color: lighten($error-bg, 10%);
border-color: $error-fg;
}
> .t_modifier_interface {
color: $info-fg;
background-color: $info-bg;
border-color: $info-fg;
}
> .t_modifier_readonly {
color: $warn-fg;
background-color: $warn-bg;
Expand All @@ -162,11 +182,6 @@ li[class*=m_] > .t_array.array-file-tree > .array-inner {
}
}
}
> .t_modifier_final {
color: $error-fg;
background-color: lighten($error-bg, 10%);
border-color: $error-fg;
}
.heading {
color: #4f16b0;
text-decoration: underline;
Expand Down
3 changes: 3 additions & 0 deletions tests/Debug/Utility/SerializeLogTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -370,10 +370,13 @@ public function testUnserializeLogLegacy()
'cases' => array(),
'cfgFlags' => 29360127,
'interfacesCollapse' => array(),
'isAbstract' => false,
'isAnonymous' => false,
'isFinal' => false,
'isInterface' => false,
'isMaxDepth' => false,
'isReadOnly' => false,
'isTrait' => false,
'sectionOrder' => array(
'attributes',
'extends',
Expand Down
3 changes: 3 additions & 0 deletions tests/Debug/data/ConfusableIdentifiers.php
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,13 @@
: array(
'bdk\Test\Debug\Fix𝐭ure\Con𝘧usableInteᴦface',
),
'isAbstract' => false,
'isAnonymous' => false,
'isExcluded' => false,
'isFinal' => false,
'isInterface' => false,
'isReadOnly' => false,
'isTrait' => false,
'methods' => array(

'__call' => array(
Expand Down

0 comments on commit 48b8754

Please sign in to comment.