Heim >Backend-Entwicklung >PHP-Tutorial >Hinzufügen von Funktionen für soziale Netzwerke zu einer PHP -App mit NEO4J

Hinzufügen von Funktionen für soziale Netzwerke zu einer PHP -App mit NEO4J

Jennifer Aniston
Jennifer AnistonOriginal
2025-02-18 08:59:12219Durchsuche

Hinzufügen von Funktionen für soziale Netzwerke zu einer PHP -App mit NEO4J

Im letzten Teil haben wir über Neo4j und wie man es mit PHP verwendet. In diesem Beitrag werden wir dieses Wissen verwenden, um eine echte Silex-Anwendung für soziale Netzwerke mit einer Diagrammdatenbank zu erstellen.

Key Takeaways

  • Die Verwendung von Silex, Zweig, Bootstrap und Neoclient bietet eine robuste Grundlage für die Integration sozialer Netzwerkfunktionen in eine PHP -Anwendung mit Neo4j.
  • Konfiguration des Neo4jclient innerhalb des Silex -Frameworks ermöglicht eine nahtlose Interaktion mit der NEO4J -Diagrammdatenbank, wodurch ein effizientes Datenabruf und Manipulation ermöglicht wird.
  • Die Implementierung von Benutzerprofilen und die Fähigkeit zu sehen, wer ein Benutzer folgt, zeigt die praktische Anwendung von Graph -Datenbankabfragen bei der Verwaltung sozialer Beziehungen.
  • Hinzufügen von Benutzungsbeziehungsfunktionen, z. B. dem Befolgen oder Abfindungen anderer Benutzer, präsentiert die dynamischen Funktionen von NEO4J bei der Behandlung komplexer sozialer Netzwerkoperationen innerhalb einer PHP -Anwendung.
  • Die Erweiterung sozialer Netzwerkfunktionen, um Vorschläge zu enthalten, für die auf der Grundlage vorhandener Beziehungen die Leistung von Graph -Datenbanken bei der Bereitstellung sinnvoller Datenerblicke und der Verbesserung des Benutzers einbezogen werden soll.
Bootstrapping der Anwendung

Ich verwende Silex, Twig, Bootstrap und Neoclient, um die Anwendung zu erstellen.

Erstellen Sie ein Verzeichnis für die App. Ich nannte meine spsoziale.

Fügen Sie diese Zeilen Ihrem Composer.json hinzu und führen Sie den Komponisten aus, um die Abhängigkeiten zu installieren:

<span>{
</span>  <span>"require": {
</span>    <span>"silex/silex": "~1.1",
</span>    <span>"twig/twig": ">=1.8,<2.0-dev",
</span>    <span>"symfony/twig-bridge": "~2.3",
</span>    <span>"neoxygen/neoclient": "~2.1"
</span>
  <span>},
</span>  <span>"autoload": {
</span>    <span>"psr-4": {
</span>      <span>"Ikwattro\SocialNetwork\": "src"
</span>    <span>}
</span>  <span>}
</span><span>}</span>
Sie können Bootstrap im Web/Assets -Ordner Ihres Projekts herunterladen und installieren.

finden Sie hier auch die Bootstrap-Demo-App: https://github.com/sitepoint-editors/social-network

Einrichten Sie die Silex -Anwendung

Wir müssen Silex konfigurieren und Neo4jclient deklarieren, damit es in der Silex -Anwendung verfügbar ist. Erstellen Sie im Web/ Ordner Ihres Projekts eine Index.php -Datei:

<span><span><?php
</span></span><span>
</span><span><span>require_once __DIR__.'/../vendor/autoload.php';
</span></span><span>
</span><span><span>use Neoxygen<span>\NeoClient\ClientBuilder</span>;
</span></span><span>
</span><span><span>$app = new Silex<span>\Application</span>();
</span></span><span>
</span><span><span>$app['neo'] = $app->share(function(){
</span></span><span>    <span>$client = ClientBuilder<span>::</span>create()
</span></span><span>        <span>->addDefaultLocalConnection()
</span></span><span>        <span>->setAutoFormatResponse(true)
</span></span><span>        <span>->build();
</span></span><span>
</span><span>    <span>return $client;
</span></span><span><span>});
</span></span><span>
</span><span><span>$app->register(new Silex<span>\Provider\TwigServiceProvider</span>(), array(
</span></span><span>    <span>'twig.path' => __DIR__.'/../src/views',
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\MonologServiceProvider</span>(), array(
</span></span><span>    <span>'monolog.logfile' => __DIR__.'/../logs/social.log'
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\UrlGeneratorServiceProvider</span>());
</span></span><span>
</span><span><span>$app->get('/', 'Ikwattro\SocialNetwork\Controller\WebController::home')
</span></span><span>    <span>->bind('home');
</span></span><span>
</span><span><span>$app->run();</span></span>
twig ist so konfiguriert, dass er seine Vorlagendateien im Ordner SRC/Views befindet.

Eine Home -Route, die auf / ist registriert und konfiguriert, um den WebController zu verwenden, den wir später erstellen werden.
Die Anwendungsstruktur sollte so aussehen:

Hinzufügen von Funktionen für soziale Netzwerke zu einer PHP -App mit NEO4J

Beachten Sie, dass ich hier Bower verwendet habe, um Bootstrap zu installieren, aber es liegt an Ihnen, was Sie verwenden möchten.

Der nächste Schritt besteht darin, unser Basislayout mit einem Inhaltsblock zu erstellen, den unsere Kinder -Zweigvorlagen mit ihren eigenen Inhalten überschreiben.

Ich nehme das Standard -Bootstrap -Thema mit einer Navigationsleiste oben:

<span><!DOCTYPE html>
</span><span><html lang="en">
</span><span><head>
</span>    <span><meta charset="utf-8">
</span>    <span><meta http-equiv="X-UA-Compatible" content="IE=edge">
</span>    <span><meta name="viewport" content="width=device-width, initial-scale=1">
</span>    <span><meta name="description" content="">
</span>    <span><meta name="author" content="">
</span>
    <span><title>My first Neo4j application</title>
</span>
    <span><!-- Bootstrap core CSS -->
</span>    <span><link href="{{ app.request.basepath }}/assets/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
</span>    <span><!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
</span>    <span><!--[if lt IE 9]>
</span>    <span><script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
</span>    <span><script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
</span>    <span><![endif]-->
</span>
    <span><style>
</span>        body <span>{ padding-top: 70px; }
</span>    <span></style>
</span><span></head>
</span><span><body>
</span>
<span><div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
</span>    <span><div class="container">
</span>        <span><div class="navbar-header">
</span>            <span><button type="button" id="collbut" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
</span>                <span><span class="sr-only">Toggle navigation</span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>            <span></button>
</span>            <span><a class="navbar-brand" href="#">My first Neo4j application</a>
</span>        <span></div>
</span>    <span></div>
</span><span></div>
</span>
<span><div class="container-fluid">
</span>
    <span>{% block content %}
</span>
    <span>{% endblock content %}
</span>
<span></div>
</span><span></body>
</span><span></html></span>
Die Startseite (Abrufen aller Benutzer)

Bisher haben wir NEO4J in der Anwendung verfügbar, unsere Basisvorlage wird erstellt und wir möchten alle Benutzer auf der Startseite auflisten.

wir können dies in zwei Schritten erreichen:

  • Erstellen Sie unsere Home Controller -Aktion und rufen Sie Benutzer von Neo4j
  • ab
  • Übergeben Sie die Liste der Benutzer an die Vorlage und listen Sie sie
  • auf

Die Controller -Aktion

<span>{
</span>  <span>"require": {
</span>    <span>"silex/silex": "~1.1",
</span>    <span>"twig/twig": ">=1.8,<2.0-dev",
</span>    <span>"symfony/twig-bridge": "~2.3",
</span>    <span>"neoxygen/neoclient": "~2.1"
</span>
  <span>},
</span>  <span>"autoload": {
</span>    <span>"psr-4": {
</span>      <span>"Ikwattro\SocialNetwork\": "src"
</span>    <span>}
</span>  <span>}
</span><span>}</span>

Der Controller zeigt den Prozess, wir rufen den NEO -Dienst ab und geben eine Cypher -Abfrage aus, um alle Benutzer abzurufen.
Die Benutzersammlung wird dann an die Index.html.twig -Vorlage übergeben.

Die Indexvorlage

<span><span><?php
</span></span><span>
</span><span><span>require_once __DIR__.'/../vendor/autoload.php';
</span></span><span>
</span><span><span>use Neoxygen<span>\NeoClient\ClientBuilder</span>;
</span></span><span>
</span><span><span>$app = new Silex<span>\Application</span>();
</span></span><span>
</span><span><span>$app['neo'] = $app->share(function(){
</span></span><span>    <span>$client = ClientBuilder<span>::</span>create()
</span></span><span>        <span>->addDefaultLocalConnection()
</span></span><span>        <span>->setAutoFormatResponse(true)
</span></span><span>        <span>->build();
</span></span><span>
</span><span>    <span>return $client;
</span></span><span><span>});
</span></span><span>
</span><span><span>$app->register(new Silex<span>\Provider\TwigServiceProvider</span>(), array(
</span></span><span>    <span>'twig.path' => __DIR__.'/../src/views',
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\MonologServiceProvider</span>(), array(
</span></span><span>    <span>'monolog.logfile' => __DIR__.'/../logs/social.log'
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\UrlGeneratorServiceProvider</span>());
</span></span><span>
</span><span><span>$app->get('/', 'Ikwattro\SocialNetwork\Controller\WebController::home')
</span></span><span>    <span>->bind('home');
</span></span><span>
</span><span><span>$app->run();</span></span>

Die Vorlage ist sehr leicht. Sie erweitert unser Basislayout und fügt eine unsortierte Liste mit den FirstNames und LastNames des Benutzers im Inhalt geerbten Block hinzu.

Starten Sie den integrierten PHP-Server und bewundern Sie Ihre Arbeit:

<span><!DOCTYPE html>
</span><span><html lang="en">
</span><span><head>
</span>    <span><meta charset="utf-8">
</span>    <span><meta http-equiv="X-UA-Compatible" content="IE=edge">
</span>    <span><meta name="viewport" content="width=device-width, initial-scale=1">
</span>    <span><meta name="description" content="">
</span>    <span><meta name="author" content="">
</span>
    <span><title>My first Neo4j application</title>
</span>
    <span><!-- Bootstrap core CSS -->
</span>    <span><link href="{{ app.request.basepath }}/assets/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
</span>    <span><!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
</span>    <span><!--[if lt IE 9]>
</span>    <span><script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
</span>    <span><script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
</span>    <span><![endif]-->
</span>
    <span><style>
</span>        body <span>{ padding-top: 70px; }
</span>    <span></style>
</span><span></head>
</span><span><body>
</span>
<span><div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
</span>    <span><div class="container">
</span>        <span><div class="navbar-header">
</span>            <span><button type="button" id="collbut" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
</span>                <span><span class="sr-only">Toggle navigation</span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>            <span></button>
</span>            <span><a class="navbar-brand" href="#">My first Neo4j application</a>
</span>        <span></div>
</span>    <span></div>
</span><span></div>
</span>
<span><div class="container-fluid">
</span>
    <span>{% block content %}
</span>
    <span>{% endblock content %}
</span>
<span></div>
</span><span></body>
</span><span></html></span>

Hinzufügen von Funktionen für soziale Netzwerke zu einer PHP -App mit NEO4J

Funktionen für soziale Netzwerke: Zeigt, wem ein Benutzer

folgt

Nehmen wir jetzt an, wir möchten auf einen Benutzer klicken und seine Detailinformationen und die Benutzer, die er folgt, präsentiert werden.

Schritt 1: Erstellen Sie eine Route in Index.php

<span><span><?php
</span></span><span>
</span><span><span>namespace Ikwattro<span>\SocialNetwork\Controller</span>;
</span></span><span>
</span><span><span>use Silex<span>\Application</span>;
</span></span><span><span>use Symfony<span>\Component\HttpFoundation\Request</span>;
</span></span><span>
</span><span><span>class WebController
</span></span><span><span>{
</span></span><span>
</span><span>    <span>public function home(Application $application, Request $request)
</span></span><span>    <span>{
</span></span><span>        <span>$neo = $application['neo'];
</span></span><span>        <span>$q = 'MATCH (user:User) RETURN user';
</span></span><span>        <span>$result = $neo->sendCypherQuery($q)->getResult();
</span></span><span>
</span><span>        <span>$users = $result->get('user');
</span></span><span>
</span><span>        <span>return $application['twig']->render('index.html.twig', array(
</span></span><span>            <span>'users' => $users
</span></span><span>        <span>));
</span></span><span>    <span>}
</span></span><span><span>}</span></span>

Schritt 2: Erstellen Sie die Aktion von ShowUser Controller

{% extends "layout.html.twig" %}

{% block content %}
    <span><span><span><ul</span> class<span>="list-unstyled"</span>></span>
</span>        {% for user in users %}
            <span><span><span><li</span>></span>{{ user.property('firstname') }} {{ user.property('lastname') }}<span><span></li</span>></span>
</span>        {% endfor %}
    <span><span><span></ul</span>></span>
</span>{% endblock %}

Der Workflow ähnelt allen anderen Anwendungen. Sie versuchen, den Benutzer basierend auf der Anmeldung zu finden.
Wenn es nicht vorhanden ist, zeigen Sie eine 404 -Fehlerseite an, andernfalls übergeben Sie die Benutzerdaten an die Vorlage.

Schritt 3: Erstellen Sie die Vorlagendatei show_user

<span>cd spsocial/web
</span>php <span>-S localhost:8000
</span><span>open localhost:8000</span>

Schritt 4: Wiederblenden Sie die Liste der Benutzer auf der Homepage um, um Links zu ihrem Profil

anzuzeigen
<span>$app->get('/user/{login}', 'Ikwattro\SocialNetwork\Controller\WebController::showUser')
</span>    <span>->bind('show_user');</span>

Aktualisieren Sie die Homepage und klicken Sie auf jeden Benutzer, um sein Profil und die Liste der folgenden Benutzer

anzuzeigen

Hinzufügen von Funktionen für soziale Netzwerke zu einer PHP -App mit NEO4J

Vorschläge addieren

Der nächste Schritt besteht darin, dem Profil Vorschläge zu geben. Wir müssen unsere Cypher -Abfrage im Controller leicht erweitern, indem wir eine optionale Übereinstimmung hinzufügen, um Vorschläge basierend auf dem Netzwerk zweiten Grades zu finden.

Das optionale Präfix bewirkt, dass ein Match eine Zeile zurückgibt, auch wenn es keine Übereinstimmungen gab, aber mit den nicht aufgelösten Teilen auf Null eingestellt ist (ähnlich wie ein äußerer Join). Da wir möglicherweise mehrere Wege für jeden Freund von A-Friend (FOF) erhalten, müssen wir die Ergebnisse unterscheiden, um Duplikate in unserer Liste zu vermeiden (sammeln Sie eine Aggregationsoperation, die Werte in ein Array sammelt):

Der aktualisierte Controller:

<span>public function showUser(Application $application, Request $request, $login)
</span>    <span>{
</span>        <span>$neo = $application['neo'];
</span>        <span>$q = 'MATCH (user:User) WHERE user.login = {login}
</span><span>         OPTIONAL MATCH (user)-[:FOLLOWS]->(f)
</span><span>         RETURN user, collect(f) as followed';
</span>        <span>$p = ['login' => $login];
</span>        <span>$result = $neo->sendCypherQuery($q, $p)->getResult();
</span>
        <span>$user = $result->get('user');
</span>        <span>$followed = $result->get('followed');
</span>
        <span>if (null === $user) {
</span>            <span>$application->abort(404, 'The user $login was not found');
</span>        <span>}
</span>
        <span>return $application['twig']->render('show_user.html.twig', array(
</span>            <span>'user' => $user,
</span>            <span>'followed' => $followed
</span>        <span>));
</span>    <span>}</span>

Die aktualisierte Vorlage:

{% extends "layout.html.twig" %}

{% block content %}
    <span><span><span><h1</span>></span>User informations<span><span></h1</span>></span>
</span>
    <span><span><span><h2</span>></span>{{ user.property('firstname') }} {{ user.property('lastname') }}<span><span></h2</span>></span>
</span>    <span><span><span><h3</span>></span>{{ user.property('login') }}<span><span></h3</span>></span>
</span>    <span><span><span><hr</span>/></span>
</span>
    <span><span><span><div</span> class<span>="row"</span>></span>
</span>        <span><span><span><div</span> class<span>="col-sm-6"</span>></span>
</span>            <span><span><span><h4</span>></span>User <span><span><span</span> class<span>="label label-info"</span>></span>{{ user.property('login') }}<span><span></span</span>></span> follows :<span><span></h4</span>></span>
</span>            <span><span><span><ul</span> class<span>="list-unstyled"</span>></span>
</span>                {% for follow in followed %}
                    <span><span><span><li</span>></span>{{ follow.property('login') }} ( {{ follow.property('firstname') }} {{ follow.property('lastname') }} )<span><span></li</span>></span>
</span>                {% endfor %}
            <span><span><span></ul</span>></span>
</span>        <span><span><span></div</span>></span>
</span>    <span><span><span></div</span>></span>
</span>
{% endblock %}

Sie können sofort die Vorschläge in Ihrer Bewerbung untersuchen:

Hinzufügen von Funktionen für soziale Netzwerke zu einer PHP -App mit NEO4J

eine Verbindung zu einem Benutzer herstellen (Hinzufügen von Beziehung)

Um eine Verbindung zu einem vorgeschlagenen Benutzer herzustellen, fügen wir jedem vorgeschlagenen Benutzer, der beide Benutzer als versteckte Felder enthalten, einen Postformular -Link hinzu. Wir erstellen auch die entsprechende Route und die Controller -Aktion.

Erstellen der Route:

{% for user in users %}
    <span><span><span><li</span>></span>
</span>        <span><span><span><a</span> href<span>="{{ path('show_user', { login: user.property('login') }) }}"</span>></span>
</span>           {{ user.property('firstname') }} {{ user.property('lastname') }}
        <span><span><span></a</span>></span>
</span>    <span><span><span></li</span>></span>
</span>{% endfor %}

Die Controller -Aktion:

<span>{
</span>  <span>"require": {
</span>    <span>"silex/silex": "~1.1",
</span>    <span>"twig/twig": ">=1.8,<2.0-dev",
</span>    <span>"symfony/twig-bridge": "~2.3",
</span>    <span>"neoxygen/neoclient": "~2.1"
</span>
  <span>},
</span>  <span>"autoload": {
</span>    <span>"psr-4": {
</span>      <span>"Ikwattro\SocialNetwork\": "src"
</span>    <span>}
</span>  <span>}
</span><span>}</span>

Nichts Ungewöhnliches hier, wir stimmen mit dem Startbenutzerknoten und dem Zielbenutzerknoten überein und fusionieren dann die entsprechende folgende Beziehung. Wir verwenden die Beziehung, um doppelte Einträge zu vermeiden.

Die Vorlage:

<span><span><?php
</span></span><span>
</span><span><span>require_once __DIR__.'/../vendor/autoload.php';
</span></span><span>
</span><span><span>use Neoxygen<span>\NeoClient\ClientBuilder</span>;
</span></span><span>
</span><span><span>$app = new Silex<span>\Application</span>();
</span></span><span>
</span><span><span>$app['neo'] = $app->share(function(){
</span></span><span>    <span>$client = ClientBuilder<span>::</span>create()
</span></span><span>        <span>->addDefaultLocalConnection()
</span></span><span>        <span>->setAutoFormatResponse(true)
</span></span><span>        <span>->build();
</span></span><span>
</span><span>    <span>return $client;
</span></span><span><span>});
</span></span><span>
</span><span><span>$app->register(new Silex<span>\Provider\TwigServiceProvider</span>(), array(
</span></span><span>    <span>'twig.path' => __DIR__.'/../src/views',
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\MonologServiceProvider</span>(), array(
</span></span><span>    <span>'monolog.logfile' => __DIR__.'/../logs/social.log'
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\UrlGeneratorServiceProvider</span>());
</span></span><span>
</span><span><span>$app->get('/', 'Ikwattro\SocialNetwork\Controller\WebController::home')
</span></span><span>    <span>->bind('home');
</span></span><span>
</span><span><span>$app->run();</span></span>

Sie können jetzt auf die Schaltfläche "Folge" des vorgeschlagenen Benutzers klicken, dem Sie folgen möchten:

Hinzufügen von Funktionen für soziale Netzwerke zu einer PHP -App mit NEO4J

Beziehungen entfernen:

Der Workflow zum Entfernen von Beziehungen ist ziemlich gleich wie beim Hinzufügen neuer Beziehungen, erstellen Sie eine Route, eine Controller -Aktion und passen Sie das Layout an:

Die Route:

<span><!DOCTYPE html>
</span><span><html lang="en">
</span><span><head>
</span>    <span><meta charset="utf-8">
</span>    <span><meta http-equiv="X-UA-Compatible" content="IE=edge">
</span>    <span><meta name="viewport" content="width=device-width, initial-scale=1">
</span>    <span><meta name="description" content="">
</span>    <span><meta name="author" content="">
</span>
    <span><title>My first Neo4j application</title>
</span>
    <span><!-- Bootstrap core CSS -->
</span>    <span><link href="{{ app.request.basepath }}/assets/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
</span>    <span><!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
</span>    <span><!--[if lt IE 9]>
</span>    <span><script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
</span>    <span><script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
</span>    <span><![endif]-->
</span>
    <span><style>
</span>        body <span>{ padding-top: 70px; }
</span>    <span></style>
</span><span></head>
</span><span><body>
</span>
<span><div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
</span>    <span><div class="container">
</span>        <span><div class="navbar-header">
</span>            <span><button type="button" id="collbut" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
</span>                <span><span class="sr-only">Toggle navigation</span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>            <span></button>
</span>            <span><a class="navbar-brand" href="#">My first Neo4j application</a>
</span>        <span></div>
</span>    <span></div>
</span><span></div>
</span>
<span><div class="container-fluid">
</span>
    <span>{% block content %}
</span>
    <span>{% endblock content %}
</span>
<span></div>
</span><span></body>
</span><span></html></span>

Die Controller -Aktion:

<span><span><?php
</span></span><span>
</span><span><span>namespace Ikwattro<span>\SocialNetwork\Controller</span>;
</span></span><span>
</span><span><span>use Silex<span>\Application</span>;
</span></span><span><span>use Symfony<span>\Component\HttpFoundation\Request</span>;
</span></span><span>
</span><span><span>class WebController
</span></span><span><span>{
</span></span><span>
</span><span>    <span>public function home(Application $application, Request $request)
</span></span><span>    <span>{
</span></span><span>        <span>$neo = $application['neo'];
</span></span><span>        <span>$q = 'MATCH (user:User) RETURN user';
</span></span><span>        <span>$result = $neo->sendCypherQuery($q)->getResult();
</span></span><span>
</span><span>        <span>$users = $result->get('user');
</span></span><span>
</span><span>        <span>return $application['twig']->render('index.html.twig', array(
</span></span><span>            <span>'users' => $users
</span></span><span>        <span>));
</span></span><span>    <span>}
</span></span><span><span>}</span></span>

Sie können hier sehen, dass ich übereinstimmte, um die Beziehung zwischen den beiden Benutzern zu finden,
und ich habe hinzugefügt, dass eine Kennung der Beziehung folgt, um sie löschen zu können.

Die Vorlage:

{% extends "layout.html.twig" %}

{% block content %}
    <span><span><span><ul</span> class<span>="list-unstyled"</span>></span>
</span>        {% for user in users %}
            <span><span><span><li</span>></span>{{ user.property('firstname') }} {{ user.property('lastname') }}<span><span></li</span>></span>
</span>        {% endfor %}
    <span><span><span></ul</span>></span>
</span>{% endblock %}

Sie können jetzt unter den folgenden Benutzer auf die Schaltfläche zur Beziehung entfernen klicken:

Hinzufügen von Funktionen für soziale Netzwerke zu einer PHP -App mit NEO4J

Schlussfolgerung

Graph -Datenbanken passen perfekt für relationale Daten, und es ist einfach, sie mit PHP und Neoclient zu verwenden.
Cypher ist eine bequeme Abfragesprache, die Sie schnell lieben werden, da es Sie ermöglicht, Ihr Diagramm auf natürliche Weise abzufragen.

Es gibt so viel davon von der Verwendung von Graph -Datenbanken für reale Daten,
,
Ich lade Sie ein, mehr zu entdecken, indem Sie das Handbuch http://neo4j.com/docs/stable/,

lesen Sehen Sie sich Anwendungsfälle und Beispiele an, die von NEO4J -Benutzern geliefert wurden und @neo4j auf Twitter folgen.

häufig gestellte Fragen zum Hinzufügen von Funktionen sozialer Netzwerkfunktionen zur PHP -App mit NEO4J

Was ist Neo4j und warum ist es in PHP -Anwendungen wichtig? In PHP -Anwendungen ist es wichtig, da Entwickler Daten mit seinem Graphatenmodell speichern, verwalten und abfragen können. Mit NEO4J können Sie hohe Datenmengen in Echtzeit verarbeiten und analysieren, was es ideal macht, um soziale Netzwerkfunktionen in PHP-Anwendungen zu erstellen.

Um NEO4J zu installieren, müssen Sie die neueste Version von der offiziellen Website herunterladen und den Installationsanweisungen befolgen. Nach der Installation können Sie es konfigurieren, indem Sie die Konfigurationsdatei bearbeiten, die sich normalerweise im Verzeichnis "Conf" Ihrer NEO4J -Installation befindet. Sie können es dann mit einem NEO4J -PHP -Client mit Ihrer PHP -Anwendung verbinden.

Was sind die neuen Funktionen in Php 7.4, 8.1 und 8.3, die meine Anwendung verbessern können? PHP 8.1 brachte Enum, Fasern und schreibgeschützte Eigenschaften. Obwohl Php 8.3 noch nicht veröffentlicht wird, wird erwartet, dass sie neue Funktionen einführen, die Ihre Anwendung weiter verbessern. Diese Funktionen können die Leistung, Lesbarkeit und Wartbarkeit Ihrer PHP -Anwendung verbessern. Mit der Verwendung von NEO4J wird das Erstellen einer Diagrammdatenbank, das Definieren der Beziehungen zwischen den Knoten und das Abfragen der Datenbank durchgeführt. Sie können Cypher, die Abfragesprache von Neo4J, verwenden, um mit der Graph -Datenbank aus Ihrer PHP -Anwendung zu interagieren. Eine Grafikdatenbank ist von Natur aus besser für soziale Netzwerkfunktionen als andere Arten von Datenbanken geeignet. Es ermöglicht effiziente Abfragen und Handhabung komplexer Beziehungen, die in sozialen Netzwerken üblich sind. Es bietet auch hohe Leistung, Skalierbarkeit und Flexibilität.

Wie kann ich meine PHP -Anwendung in eine neuere Version migrieren? Ihr Code zum Entfernen von veralteten Funktionen und zur Verwendung neuer und testen Sie Ihre Anwendung, um sicherzustellen, dass sie korrekt funktioniert. Es wird empfohlen, dies in einer Entwicklungsumgebung zuerst zu tun, bevor die Änderungen in der Produktionsumgebung angewendet werden. Zu einigen häufigen Herausforderungen gehören die Behandlung großer Datenmengen, die Verwaltung komplexer Beziehungen und die Gewährleistung der Echtzeitleistung. Diese können durch die Verwendung einer geeigneten Datenbank wie Neo4J, die Optimierung Ihrer Abfragen und die Verwendung effizienter Datenstrukturen und Algorithmen überwunden werden. Kann die Leistung Ihrer PHP-Anwendung mit NEO4J optimieren, indem Sie effiziente Abfragen verwenden, Ihre Daten indizieren und die eingebauten Leistungseinstellungen von NEO4J verwenden. Sie können auch die leistungssteigernden Funktionen von PHP wie JIT-Kompilierung und Vorspannungsfunktionen verwenden.

Wie kann ich meine PHP Verbindungen, Implementierung der Authentifizierung und Autorisierung und Verwendung der integrierten Sicherheitsfunktionen von NEO4J. Sie sollten auch Best Practices für die PHP-Sicherheit befolgen, z. B. die Validierung der Eingaben, die Verwendung vorbereiteter Anweisungen und die Aufrechterhaltung Ihrer PHP-Installation auf dem neuesten Stand.

Wo finde ich Ressourcen, um mehr über die Verwendung von Neo4j mit PHP zu erfahren? Es gibt auch viele Online -Kurse, Bücher und Blogs, die dieses Thema ausführlich behandeln.

Das obige ist der detaillierte Inhalt vonHinzufügen von Funktionen für soziale Netzwerke zu einer PHP -App mit NEO4J. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn