[buddypress-trac] [BuddyPress Trac] #7218: Only load component action and screen code when we're on the component's page

buddypress-trac noreply at wordpress.org
Thu Nov 30 19:59:32 UTC 2017

#7218: Only load component action and screen code when we're on the component's
 Reporter:  r-a-y            |       Owner:
     Type:  enhancement      |      Status:  reopened
 Priority:  normal           |   Milestone:  3.0
Component:  Core             |     Version:
 Severity:  normal           |  Resolution:
 Keywords:  has-patch early  |

Comment (by DJPaul):

 I am very excited by what this change represents.

 I've been trying to find a way to advance the state of the BuddyPress
 codebase for quite some time, while keeping most of our current
 (decisions? limitations? goals?) intact. What you've done here @r-a-y is
 better than the few ideas I've come up with (and mostly kept to myself),
 but also inspires me by setting a vision for the what the future of the
 codebase can look like.

 Modernising the codebase needs to be approached with care. It starts with
 what you've done here, and for the current patches, I'd like to offer just
 a couple of comments for review:

 * In each new class, we shouldn't not put the implementation inside the
 constructor. This can cause very subtle bugs regarding null-value
 (future?) class properties in certain load-order situations. That sounds
 vague, I can't remember the precise details, but I got schooled by this
 way back in 2009, just as I started using BuddPress, and I remember the
 incident vividly (hack day at my first WordCamp!).
 * In one of Boone's comments, he's suggested this and said maybe use
 static methods. I'd like to suggest we use regular instance methods.

 The flexibility this gives us, in terms of being to re-implement and re-
 name these classes in the future, is very liberating compared to what we'd
 have to do today.

 After these changes go in, we can then plan a modernisation strategy, the
 first steps of which involves adopting, more fully, dependency injection.
 In the long run, we'll be able to get to the point where we can retire the
 `$bp` global, because it'll be passed directly to classes that need it.

 In all, this change will set us on a road to making BuddyPress more
 testable, more clear, and more decoupled. Bravo, @r-a-y!

Ticket URL: <https://buddypress.trac.wordpress.org/ticket/7218#comment:35>
BuddyPress Trac <http://buddypress.org/>
BuddyPress Trac

More information about the buddypress-trac mailing list