suchen
HeimBackend-EntwicklungPHP-TutorialHinzufü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

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,    <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></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></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>
</span><span>
</span><span>
</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="%7B%7B%20app.request.basepath%20%7D%7D/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>
</style></span>        body <span>{ padding-top: 70px; }
</span>    <span>
</span><span>
</span><span>
</span>
<span><div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
    <span><div class="container">
        <span><div class="navbar-header">
            <span><button type="button" id="collbut" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
</button></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>
</span>            <span><a class="navbar-brand" href="#">My first Neo4j application</a>
</span>        <span></span>
</div>
</span>    <span></span>
</div>
</span><span></span>
</div>
</span>
<span><div class="container-fluid">

    <span>{% block content %}
</span>
    <span>{% endblock content %}
</span>
<span></span>
</div>
</span><span>
</span><span></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,    <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></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></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>
</span><span>
</span><span>
</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="%7B%7B%20app.request.basepath%20%7D%7D/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>
</style></span>        body <span>{ padding-top: 70px; }
</span>    <span>
</span><span>
</span><span>
</span>
<span><div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
    <span><div class="container">
        <span><div class="navbar-header">
            <span><button type="button" id="collbut" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
</button></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>
</span>            <span><a class="navbar-brand" href="#">My first Neo4j application</a>
</span>        <span></span>
</div>
</span>    <span></span>
</div>
</span><span></span>
</div>
</span>
<span><div class="container-fluid">

    <span>{% block content %}
</span>
    <span>{% endblock content %}
</span>
<span></span>
</div>
</span><span>
</span><span></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></span>

Schritt 2: Erstellen Sie die Aktion von ShowUser Controller

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

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

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

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>></li></span>
</span>        <span><span><span><a> href<span>="{{ path('show_user', { login: user.property('login') }) }}"</span>></a></span>
</span>           {{ user.property('firstname') }} {{ user.property('lastname') }}
        <span><span><span></span>></span>
</span>    <span><span><span></span>></span>
</span>{% endfor %}</span></span>

Die Controller -Aktion:

<span>{
</span>  <span>"require": {
</span>    <span>"silex/silex": "~1.1",
</span>    <span>"twig/twig": ">=1.8,    <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></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></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>
</span><span>
</span><span>
</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="%7B%7B%20app.request.basepath%20%7D%7D/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>
</style></span>        body <span>{ padding-top: 70px; }
</span>    <span>
</span><span>
</span><span>
</span>
<span><div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
    <span><div class="container">
        <span><div class="navbar-header">
            <span><button type="button" id="collbut" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
</button></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>
</span>            <span><a class="navbar-brand" href="#">My first Neo4j application</a>
</span>        <span></span>
</div>
</span>    <span></span>
</div>
</span><span></span>
</div>
</span>
<span><div class="container-fluid">

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

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
PHP -Protokollierung: Best Practices für die PHP -ProtokollanalysePHP -Protokollierung: Best Practices für die PHP -ProtokollanalyseMar 10, 2025 pm 02:32 PM

Die PHP -Protokollierung ist für die Überwachung und Debugie von Webanwendungen von wesentlicher Bedeutung sowie für das Erfassen kritischer Ereignisse, Fehler und Laufzeitverhalten. Es bietet wertvolle Einblicke in die Systemleistung, hilft bei der Identifizierung von Problemen und unterstützt eine schnellere Fehlerbehebung

Arbeiten mit Flash -Sitzungsdaten in LaravelArbeiten mit Flash -Sitzungsdaten in LaravelMar 12, 2025 pm 05:08 PM

Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIsCurl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIsMar 14, 2025 am 11:42 AM

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Vereinfachte HTTP -Reaktion verspottet in Laravel -TestsVereinfachte HTTP -Reaktion verspottet in Laravel -TestsMar 12, 2025 pm 05:09 PM

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

12 Beste PHP -Chat -Skripte auf Codecanyon12 Beste PHP -Chat -Skripte auf CodecanyonMar 13, 2025 pm 12:08 PM

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

Erklären Sie das Konzept der späten statischen Bindung in PHP.Erklären Sie das Konzept der späten statischen Bindung in PHP.Mar 21, 2025 pm 01:33 PM

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu.Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu.Mar 28, 2025 pm 05:12 PM

In dem Artikel werden Frameworks hinzugefügt, das sich auf das Verständnis der Architektur, das Identifizieren von Erweiterungspunkten und Best Practices für die Integration und Debuggierung hinzufügen.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

VSCode Windows 64-Bit-Download

VSCode Windows 64-Bit-Download

Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.