diff --git src/bp-core/classes/class-bp-walker-nav-menu.php src/bp-core/classes/class-bp-walker-nav-menu.php
index c88181f5a..7a5397a2f 100644
--- src/bp-core/classes/class-bp-walker-nav-menu.php
+++ src/bp-core/classes/class-bp-walker-nav-menu.php
@@ -10,12 +10,24 @@
 // Exit if accessed directly.
 defined( 'ABSPATH' ) || exit;
 
+if ( PHP_VERSION_ID >= 50600 ) {
+	require_once dirname( __DIR__ ) . '/compat/php56/trait-bp-compat-walker-nav-menu.php';
+} else {
+	require_once dirname( __DIR__ ) . '/compat/php53/trait-bp-compat-walker-nav-menu.php';
+}
+
 /**
  * Create HTML list of BP nav items.
  *
  * @since 1.7.0
  */
 class BP_Walker_Nav_Menu extends Walker_Nav_Menu {
+	/**
+	 * Use the Compat Trait according to PHP version.
+	 *
+	 * @since 5.1.0
+	 */
+	use BP_Compat_Walker_Nav_Menu;
 
 	/**
 	 * Description of fields indexes for building markup.
@@ -47,6 +59,7 @@ class BP_Walker_Nav_Menu extends Walker_Nav_Menu {
 	 * those have ID/post_parent.
 	 *
 	 * @since 1.7.0
+	 * @since 5.1.0 Method was renamed from `walk` to `do_walk` to ensure PHP 5.3 compatibility
 	 *
 	 * @see Walker::walk()
 	 *
@@ -54,8 +67,7 @@ class BP_Walker_Nav_Menu extends Walker_Nav_Menu {
 	 * @param int   $max_depth See {@link Walker::walk()}.
 	 * @return string See {@link Walker::walk()}.
 	 */
-	public function walk( $elements, $max_depth ) {
-		$args   = array_slice( func_get_args(), 2 );
+	public function do_walk( $elements, $max_depth, $args = array() ) {
 		$output = '';
 
 		if ( $max_depth < -1 ) // Invalid parameter.
diff --git src/bp-core/compat/php53/trait-bp-compat-walker-nav-menu.php src/bp-core/compat/php53/trait-bp-compat-walker-nav-menu.php
index e69de29bb..e86ff1ea4 100644
--- src/bp-core/compat/php53/trait-bp-compat-walker-nav-menu.php
+++ src/bp-core/compat/php53/trait-bp-compat-walker-nav-menu.php
@@ -0,0 +1,28 @@
+<?php
+/**
+ * Walker_Nav_Menu Compat for PHP 5.3 and UP.
+ *
+ * @package BuddyPress
+ * @subpackage Core
+ * @since 5.1.0
+ */
+
+ // Exit if accessed directly.
+defined( 'ABSPATH' ) || exit;
+
+
+trait BP_Compat_Walker_Nav_Menu {
+	/**
+	 * Compat method to extend Walker_Nav_Menu::walk() in PHP < 5.6.
+	 *
+	 * @since 5.1.0
+	 *
+	 * @param array $elements  See {@link Walker::walk()}.
+	 * @param int   $max_depth See {@link Walker::walk()}.
+	 */
+	public function walk( $elements, $max_depth ) {
+		$args = array_slice( func_get_args(), 2 );
+
+		return $this->do_walk( $elements, $max_depth, $args );
+	}
+}
diff --git src/bp-core/compat/php56/trait-bp-compat-walker-nav-menu.php src/bp-core/compat/php56/trait-bp-compat-walker-nav-menu.php
index e69de29bb..6dc121691 100644
--- src/bp-core/compat/php56/trait-bp-compat-walker-nav-menu.php
+++ src/bp-core/compat/php56/trait-bp-compat-walker-nav-menu.php
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Walker_Nav_Menu Compat for PHP 5.6 and UP.
+ *
+ * @package BuddyPress
+ * @subpackage Core
+ * @since 5.1.0
+ */
+
+ // Exit if accessed directly.
+defined( 'ABSPATH' ) || exit;
+
+trait BP_Compat_Walker_Nav_Menu {
+	/**
+	 * Compat method to extend Walker_Nav_Menu::walk() in PHP > 5.6.
+	 *
+	 * @since 5.1.0
+	 *
+	 * @param array $elements  See {@link Walker::walk()}.
+	 * @param int   $max_depth See {@link Walker::walk()}.
+	 * @param mixed ...$args   See {@link Walker::walk()}.
+	 */
+	public function walk( $elements, $max_depth, ...$args ) {
+		return $this->do_walk( $elements, $max_depth, $args );
+	}
+}
diff --git tests/phpunit/testcases/core/class-bp-walker-nav-menu.php tests/phpunit/testcases/core/class-bp-walker-nav-menu.php
index e69de29bb..75f4866c2 100644
--- tests/phpunit/testcases/core/class-bp-walker-nav-menu.php
+++ tests/phpunit/testcases/core/class-bp-walker-nav-menu.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * @group core
+ * @group BP_Walker_Nav_Menu
+ */
+class BP_Tests_Walker_Nav_Menu extends BP_UnitTestCase {
+	protected $reset_user_id;
+	protected $user_id;
+
+	public function setUp() {
+		parent::setUp();
+
+		$this->reset_user_id = get_current_user_id();
+
+		$this->user_id = self::factory()->user->create();
+		$this->set_current_user( $this->user_id );
+	}
+
+	public function tearDown() {
+		parent::tearDown();
+		$this->set_current_user( $this->reset_user_id );
+	}
+
+	public function test_walk_method() {
+		$expected = array( 'activity-class', 'xprofile-class' );
+		$items    = array(
+			(object) array(
+				'component_id' => 'activity',
+				'name'         => 'Activity',
+				'slug'         => 'activity',
+				'link'         => trailingslashit( bp_loggedin_user_domain() . bp_get_activity_slug() ),
+				'css_id'       => 'activity',
+				'class'        => array( $expected[0] ),
+			),
+			(object) array(
+				'component_id' => 'xprofile',
+				'name'         => 'Profile',
+				'slug'         => 'profile',
+				'link'         => trailingslashit( bp_loggedin_user_domain() . bp_get_profile_slug() ),
+				'css_id'       => 'xprofile',
+				'class'        => array( $expected[1] ),
+			),
+		);
+		$args = (object) array( 'before' => '', 'link_before' => '', 'after' => '', 'link_after' => '' );
+		$walker = new BP_Walker_Nav_Menu();
+		$output = $walker->walk( $items, -1, $args );
+		preg_match_all( '/class=["\']?([^"\']*)["\' ]/is', $output, $classes );
+		$this->assertSame( $classes[1], $expected );
+	}
+}
